附加到班级列表中

时间:2013-09-21 14:31:13

标签: python list class append

我想知道如何附加到班级中的列表......

class Dataset(object):

    def __init__(self):
        self.grade=[]

    def add(self, x):
        return Dataset(self.grade.append(x))

这是我迄今为止所做的一件事的一个例子。在测试中,我有......

def main():
    print('This is a program to compute the min, max, mean and')
    print('standard deviation for a set of numbers.\n')
    data = Dataset()
    while True:
        xStr = float(input('Enter a number (<Enter> to quit): '))
        if xStr == '':
            break
        data.add(xStr)

到目前为止,我有正确的想法吗?

2 个答案:

答案 0 :(得分:2)

add方法应该只是def add(self, x): self.grade.append(x)。除此之外,你是对的。

答案 1 :(得分:2)

你需要这样的东西:

class Dataset(object):

    def __init__(self):
        self.grade=[]

    def add(self, x):
        self.grade.append(x)

由于list.append是一个变异操作,因此无需返回任何内容。

其次,当您将xStr转换为浮点数时,if xStr == ''始终为False。最好使用try-except,因为float('')会引发ValueError

try:
   xStr = float(input('Enter a number (<Enter> to quit): '))
   data.add(xStr)
except ValueError:
   break

while-True循环的另一种替代方法:

from functools import partial
par = partial(input, 'Enter a number (<Enter> to quit): ')
for inp in iter(par, ''):
    try:
       inp = float(inp)
       data.add(inp) 
    except ValueError:
       break

最后,如果你在py3.x上,那么就不需要从object继承,py3.x中已经删除了经典类。

<强>演示:

>>> data = Dataset()
>>> data.add(1)
>>> data.grade
[1]