如何删除Python中的旧引用?

时间:2014-06-25 14:53:55

标签: python object del

假设我有以下课程

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

1 个答案:

答案 0 :(得分:5)

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

__init__初始化它:

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

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