Почему следующее:Инициализация ключевых слов аргументах в Python
class A(object):
def __init__(self, var=[]):
self._var = var
print 'var = %s %s' % (var, id(var))
a1 = A()
a1._var.append('one')
a2 = A()
результат:
var = [] 182897439952
var = ['one'] 182897439952
Я не понимаю, почему он не использует новый экземпляр списка при использовании дополнительного ключевые аргументы, может ли кто-нибудь объяснить это?
было объяснено снова и снова. – SilentGhost
Пример объяснения: http://stackoverflow.com/questions/530530/python-2-x-gotchas-and-landmines –
или здесь: http://stackoverflow.com/questions/366422/what-is-the- pythonic-way-to-avoid-default-parameters-that-are-empty-lists – SilentGhost