下面的代码对我来说不是预期的。你知道吗
class stateClass:
state = 0
states = []
states.append(stateClass)
states.append(stateClass)
def populateStates(states):
for s in states:
if s.state == 0
print 'populating'
s.state = 1
populateStates(states)
输出为
states array length: 2
populating
这是第二次失败
for s in states:
if s.state == 0
if conditional第二次失败,尽管它是数组中的另一个索引,因此s.state应该初始化为0。所以我认为循环没有正确地迭代。你知道吗
有人知道怎么了吗?你知道吗
Python不是Java。循环很好,问题是类。你知道吗
state
是类变量,而不是实例变量。它由类的所有实例共享。实际上你根本没有实例化这个类。你知道吗请改为:
你不需要分号。你知道吗
你不需要
;
的-这不是C和co等等。。。你知道吗这里您创建了一个
class level attribute
-即state
由stateClass
的所有实例共享。你知道吗您将附加到列表
stateClass
本身-即,类的定义,而不是类的实际实例。。。你知道吗一旦在其中一个实例中更改
state
,stateClass
的所有实例现在都具有更改后的值。你知道吗您很可能希望创建实例:
要显示状态,请执行以下操作:
如果您想要一个
property
以避免类外的显式设置,那么:相关问题 更多 >
编程相关推荐