Я новичок в Python, и у меня возникли некоторые проблемы с пониманием того, как словарь работает в Python.
Я создал класс:
class Test:
dictionary = dict()
def __init__(self, id):
self.id = id
def add(self, key, val):
self.dictionary[key] = val
def print(self):
print("id: " + str(self.id))
print(self.dictionary.items())
Я выполняю этот код:
list = [Test(0), Test(1)]
list[0].add(0, 0)
list[1].add(1, 1)
for t in list:
t.print()
Желаемый эффект этого кода - получить:
id: 0
dict_items([(0, 0)])
id: 1
dict_items([(1, 1)])
Но вместо этого я получаю:
id: 0
dict_items([(0, 0), (1, 1)])
id: 1
dict_items([(0, 0), (1, 1)])
Почему это происходит? И что мне делать, чтобы получить желаемый эффект? Кажется, словарь использует одну и ту же память, несмотря на то, что он принадлежит двум разным экземплярам одного и того же класса.