class X:
def __init__(self, d={}):
self.x = []
d['any'] = self.x
def append(self, i):
self.x.append(i)
x = X()
x.append(3)
x.append(13)
x.append(123213)
print(x.x) # show [3, 13, 123213]
问题是,d
会发生什么?是垃圾收集?如果是,x
如何仍然存在?
答案 0 :(得分:3)
按d
,您的意思是dict
对象作为该参数的默认值。对此dict
有一个“隐藏”引用,可以防止它被垃圾回收。
>>> print x.__init__.__defaults__
({'any': [3, 13, 123213]},)