为什么当我在下面的代码中调用del函数时,为什么对象没有被删除并重新实例化?
class A:
def __init__(self, a={}):
if not ('1' in a):
a['1']=1
else:
a['1']+=1
print (a['1'])
def __del__(self):
del self.a
for i in range (5):
a=A()
输出:
1,2,3,4,5
预期输出:
1,1,1,1,1
当您在类的初始化中将可变项用作默认参数时,它将在同一范围内创建的所有实例之间共享。您需要在类实例的每个init中创建一个dict,例如
class A:
def __init__(self, a=None):
a = {} if not a else a
if not ('1' in a):
a['1']=1
else:
a['1']+=1
print (a['1'])
def __del__(self):
del self.a
for i in range(5):
a=A()
输出
1
1
1
1
1