假设我有以下类(class)
class Daddy:
children=[]
def addChild(self,aChild):
self.children.append(aChild)
class Child:
name = ''
def __init__(self, aName):
self.name = aName
aChild = Child('Peter')
aDaddy = Daddy()
aDaddy.addChild(aChild)
print aDaddy.children[0].name
del(aDaddy)
anotherDaddy = Daddy()
print anotherDaddy.children[0].name
Daddy() 保留对对象 aDaddy 的引用,我得到以下输出:
Peter
Peter
最佳答案
children
是一个类变量(类似于其他语言中的静态变量),因此它在 Daddy
的所有实例之间共享(与 name
相同) Child
中的 code> 变量)。
改为在 __init__
中初始化它:
class Daddy:
def __init__(self):
self.children = []
def addChild(self,aChild):
self.children.append(aChild)
关于python - 如何删除Python中的旧引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24412046/