【问题标题】:Can't loop through object list in Python无法循环遍历 Python 中的对象列表
【发布时间】:2016-11-21 13:43:30
【问题描述】:

我将一个类的实例附加到 Python 中的列表中,如下所示:

a_list = []
a_list.append(AClass())

(至少一个追加)。

当尝试遍历列表时:

for a in a_list:
    # Do something to know if loop runs...
    pass

它似乎没有运行循环。

打印列表长度时,为0。

该列表作为类* 实例的属性附加(其文件包含导入的“AClass”文件)。该列表在第三个文件的类实例中循环(并检查长度),该实例也附加在第一个类*的实例上。

【问题讨论】:

  • 请发MCVE
  • 这似乎不是"Minimal, Complete, and Verifiable example"。你能确保为我们提供一个吗?这不仅可以帮助我们,也可以帮助您。
  • >>"该列表作为类*实例的属性附加(其文件包含导入的“AClass”文件)。该列表在第三个文件的类中循环(并检查长度)实例也附加在第一个类*的实例上。”您能否发布更多代码,因为到目前为止您发布的内容正常
  • 接受一个答案,会给你一些声誉,也会奖励其他尝试提供帮助的用户的努力。

标签: python class loops python-3.x


【解决方案1】:

这很奇怪,这是我得到的:

class AClass():
    pass

a_list = []
a_list.append(AClass())

for a in a_list:
    print(a)
# <__main__.AClass object at 0x10b510c18>

print(len(a_list))
# 1

a_list.append(AClass())

print(len(a_list))
# 2

这个问题可能与您将列表分配为类属性有关吗? (需要查看您的代码来确认。)

【讨论】:

    【解决方案2】:

    嗯...适合我:

    >>> class AClass(object):
    ...   def __init__(self):
    ...     self.a = "AClass"
    ... 
    >>> a_list = []
    >>> a_list.append(AClass())
    >>> a_list.append(AClass())
    >>> a_list.append(AClass())
    >>> for a in a_list:
    ...   print a.a
    ... 
    AClass
    AClass
    AClass
    >>> 
    

    使用python 2.7

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-22
      • 2013-05-29
      • 1970-01-01
      • 1970-01-01
      • 2018-10-26
      • 2019-04-15
      • 2015-06-27
      • 1970-01-01
      相关资源
      最近更新 更多