最初我的程序是这样的:
inst = {}
class IContainer:
dicList = {}
for i in range(10):
inst[i] = IContainer()
def FindEnd(node):
if node.text != None:
inst[counter].dicList[node.tag] = node.text
else:
for subNode in node:
FindEnd(subNode)
counter = 0
for element in root:
if element.tag == "Items":
for subE in element:
if subE.tag == "Item":
for subSubE in subE:
FindEnd(subSubE, counter)
counter += 1
这很好,我可以把东西解析成字典,我想动态地创建列表。在
所以
^{pr2}$当我运行这个
for i in range(len(inst)):
print inst[i]
print inst[i].dicList
所有的inst都被最后一个循环的地址和数据替换了……我不知道出了什么问题。在
在您的例子中,
dicList
是一个类属性,其中需要一个实例属性。在类属性只有一个对象可引用(这正是您获得这些结果的原因),而实例属性是在实例化时创建的,因此每个实例引用它们自己的
dicList
。在所以您需要使用实例属性,在这种情况下,可以通过在构造函数中创建所述属性来实现。在
dicList
是一个类属性。在相关问题 更多 >
编程相关推荐