这是我为我发现的一个问题创建的测试用例。在
由于某些原因,B()中的dict()'l'似乎没有保存正确的值。在我的Linux.7.04版本中,请参见下面的python.7.04。在class A():
name = None
b = None
def __init__(self, name, bname, cname, dname):
self.name = name
print "A: name", name
self.b = B(name, bname, cname, dname)
print "A self.b:", self.b
class B():
name = None
l = dict()
c = None
def __init__(self, name, bname, cname, dname):
self.aname = name
self.name = bname
print " B: name", bname
self.c = C(bname, cname, dname)
self.l["bb"] = self.c
print " B self:", self
print " B self.c:", self.c
print " B self.l[bb]:", self.l["bb"], "<<< OK >>>"
def dump(self):
print " A: name", self.aname
print " B: name", self.name
for i in self.l:
print " B: i=", i, "self.l[i]", self.l[i], "<<< ERROR >>>"
class C():
name = None
l = dict()
d = None
def __init__(self, bname, cname, dname):
self.bname = bname
self.cname = cname
print " B: name", bname
print " C: name", cname
print " C self:", self
def dump(self):
print " B name:", self.bname
print " C name:", self.cname
a1 = A("a1", "b1", "c1", "d1")
a2 = A("a2", "b2", "c2", "d2")
a3 = A("a3", "b3", "c3", "d3")
a1.b.dump()
a1.b.c.dump()
a2.b.dump()
a2.b.c.dump()
a3.b.dump()
a3.b.c.dump()
我的机器上的输出:
^{pr2}$
据我所知,以上几行:B: i= bb self.l[i] <__main__.c instance at> <<< ERROR >>>
应该都包含一个唯一的C()实例,就像在初始化时看到的那样,而不是最后创建的实例(请参见<;<;<;OK>;>;行)。在
这里发生了什么事?在