python类就像一个列表

时间:2011-08-23 13:41:55

标签: python class list

为什么以下代码在我添加了几个项目后才返回空白?

class Con(list):

    def __init__(self): pass

    def __str__(self):
        return ' '.join(self)

    def add(self, value)
        self.append(value)

i for i in range(10):
    Con().add(i)

>>> print Con()
# empty space instead of:
0 1 2 3 4 5 6 7 8 9 

我还要为我的课程定义什么才能像列表那样行事?

3 个答案:

答案 0 :(得分:8)

您总是在循环的每次迭代中创建一个新的con实例。您必须在循环之前创建实例并添加到该实例。此外,您正在print语句中创建另一个新实例,因此它也将变为空。

答案 1 :(得分:5)

您每次通过循环调用Con并在打印时再次调用Con()创建11个c = Con() for i in range(10): c.add(i) print c 实例。

你想要这样的东西:

{{1}}

答案 2 :(得分:2)

原因是你没有保存任何con的实例。在每个Con()上创建一个新实例。你必须把它保存在那样的地方:

c = Con()
for i in range(10):
    c.add(i)

>>> print c
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]