创建新的python对象似乎是同一个对象
我对物体有问题 下面的代码创建新的python对象似乎是同一个对象,python,Python,我对物体有问题 下面的代码 class Data: def __init__(self,data=[]): self.data = data def add(self,data): self.data.extend(data) class Parent: def testa(self): a = Data() a.add('a') print a.data def testb(sel
class Data:
def __init__(self,data=[]):
self.data = data
def add(self,data):
self.data.extend(data)
class Parent:
def testa(self):
a = Data()
a.add('a')
print a.data
def testb(self):
b = Data()
b.add('b')
print b.data
if __name__ == "__main__":
p = Parent()
p.testa()
p.testb()
生成以下输出:
[]
['a']
['a']
['a', 'b']
为什么没有创建新对象?第二次在testb中,旧的数据对象似乎仍然存在,尽管它位于私有变量中
如何更改代码以创建新对象?使用
[]
作为函数的默认参数将只创建一次列表,并在每次调用时重用此列表。请参阅以获取解释。因此,两个Data
对象共享其self.Data
成员引用的列表
您应该像这样修改代码:
class Data:
def __init__(self, data=None):
if data is None:
data=[]
self.data = data
def add(self, data):
self.data.extend(data)
这将解决您的问题。@BartVanherck,如果这解决了您的问题,您应该将此答案标记为解决方案。不要忘记通过单击绿色复选标记来接受适合您的答案。