Python 类如何像列表一样工作

1 投票
3 回答
717 浏览
提问于 2025-04-17 00:11

为什么下面的代码在我添加了几个项目后还是返回空的?

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实例。你应该在循环之前就创建这个实例,然后在这个实例上进行操作。此外,你在打印的时候又创建了一个新的实例,所以打印出来的结果也是空的。

撰写回答