Я определяю словарь в классе (назовем его Thingy). Иногда мне нужно использовать другие экземпляры Thingy как ключи в словаре для thing1. Однако, если я попытаюсь добавить вещь2 в качестве ключа со значением 1 (скажем) в словарь вещи1, то вещь2: 1 также появляется в dict of thing2!Поведение словаря Bizarre Python с использованием объектов как ключей
Пожалуйста, подтвердите, если вы можете воспроизвести (питон 2.7.6):
# class definition
class Thingy:
def __init__(self, d={}):
self.dict = d
# Test code
thing1 = Thingy()
thing2 = Thingy()
thing1.dict[thing2] = 1
print('Thing1.dict is {}'.format(thing1.dict))
print('Thing2.dict is {}'.format(thing2.dict))
дает мне
Thing1.dict is {<__main__.Thingy instance at 0x7f79fdeed998>: 1}
Thing2.dict is {<__main__.Thingy instance at 0x7f79fdeed998>: 1}
, хотя я никогда не изменял Thing2.dict!