2014-06-25 32 views
2

比方说,我有以下类如何删除Python中的旧引用?

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 

爸爸()保留对象aDaddy的引用,我得到下面的输出:

Peter 
Peter 
+0

'德尔object'这一切 –

+3

'children'是类级变量。您需要将其定义为实例级变量。 –

+1

请参阅相关问题[Python中的静态类变量](http://stackoverflow.com/questions/68645/static-class-variables-in-python) – toine

回答

5

children是一个类变量(类似于静态变量以其他语言显示),所以它在Daddy的所有实例中共享(与Child中的name变量相同)。

__init__,而不是将其初始化:

class Daddy: 
    def __init__(self): 
     self.children = [] 

    def addChild(self,aChild): 
     self.children.append(aChild)