Python 类如何像列表一样工作
为什么下面的代码在我添加了几个项目后还是返回空的?
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 个回答
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]
5
你在循环中每次都通过调用 Con()
来创建 11 个 Con
的实例,然后在打印的时候又调用了一次。
你想要的效果是这样的:
c = Con()
for i in range(10):
c.add(i)
print c
8
你在每次循环的时候都在创建一个新的con实例。你应该在循环之前就创建这个实例,然后在这个实例上进行操作。此外,你在打印的时候又创建了一个新的实例,所以打印出来的结果也是空的。