假设我有以下课程
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
Run Code Online (Sandbox Code Playgroud)
Daddy()保持对对象aDaddy的引用,我得到以下输出:
Peter
Peter
Run Code Online (Sandbox Code Playgroud)
children是一个类变量(类似于其他语言中的静态变量),因此它在所有实例中共享Daddy(与name变量in 相同Child).
__init__改为初始化:
class Daddy:
def __init__(self):
self.children = []
def addChild(self,aChild):
self.children.append(aChild)
Run Code Online (Sandbox Code Playgroud)