如果一个类,默认初始化时,指定了默认参数A,且是 list 或dict 类型的,并且在你初始化时,没有显式指定该参数值,那么你会发现,不管这个类创建多少个对象,这些对象的A属性都是相同的。
class MyClass:
def __init__(self, name, mylist=[]):
self.name = name
self.mylist = mylist
def mymethod(self):
print(self.name + ": " + str(self.mylist))
if __name__ == "__main__":
myclass1 = MyClass("myclass1")
myclass1.mymethod()
myclass2 = MyClass("myclass2")
myclass2.mylist.append(1)
myclass2.mylist.append(2)
myclass2.mymethod()
myclass1.mymethod()
print("myclass1 的 mylist为:" + str(id(myclass1.mylist)))
print("myclass2 的 mylist为:" + str(id(myclass2.mylist)))
结果如下:
myclass1: []
myclass2: [1, 2]
myclass1: [1, 2]
myclass1 的 mylist为:39484472
myclass2 的 myli