Хорошо, так это сводило меня с ума весь день.
Почему это происходит:
class Foo:
def __init__(self, bla = {}):
self.task_defs = bla
def __str__(self):
return ''.join(str(self.task_defs))
a = Foo()
b = Foo()
a.task_defs['BAR'] = 1
print 'B is ==> %s' % str(b)
print 'A is ==> %s' % str(a)
Дает мне вывод:
B is ==> {'BAR': 1}
A is ==> {'BAR': 1}
Я знаю, что это связано с тем, что Python передает все по ссылке.
Но почему это происходит? Это буквально заставляло меня сходить с ума весь день, в основном заставляя меня порвать мои вещи на части. Разве Python не должен быть достаточно умным, чтобы иметь дело с чем-то вроде этого?