Также:
class A:
def __init__(self, n=[0]):
print id(n)
self.data = n[:]
print id(self.data)
del n
a = A()
print a.data[0] #prints 0
a.data[0] +=1
print a.data[0] #prints 1
print
b = A()
print b.data[0] #prints desired output 0
Принцип заключается в том, что он создает другой список.Если в качестве аргумента передается длинный список, в памяти будет два длинных списка.Таким образом, неудобство в том, что он создает другой список ... Вот почему я удаляю n .
Не думаю, что это лучше, но это может дать вам понимание того, что происходит