【问题标题】:python class act like a listpython类就像一个列表
【发布时间】:2011-08-23 13:41:55
【问题描述】:

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

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 

我还必须为我的班级定义什么才能像列表一样?

【问题讨论】:

    标签: python class list


    【解决方案1】:

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

    【讨论】:

    • ...而您在def add(self, value) 线上缺少:
    【解决方案2】:

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

    你想要这样的东西:

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

    【讨论】:

      【解决方案3】:

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

      c = Con()
      for i in range(10):
          c.add(i)
      
      >>> print c
      [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
      

      【讨论】:

        猜你喜欢
        • 2016-02-22
        • 2011-10-17
        • 2016-11-17
        • 2013-11-18
        • 2011-11-10
        • 1970-01-01
        • 2023-03-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多