python类就像一个列表

Sha*_*kan 1 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 
Run Code Online (Sandbox Code Playgroud)

我还要为我的班级定义什么才能像列表一样行事?

小智 8

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


Woo*_*ble 5

您通过循环每次Con调用创建11个实例,Con()并在打印时再次调用.

你想要的东西:

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

print c
Run Code Online (Sandbox Code Playgroud)