Например, у меня есть словарь:
some_dict = {
'x': 1,
'y': 2,
'z': {'three': 3, 'four': 4}
}
Мне нужно чтобы при изменении любого значения словаря, в том числе значения словаря по ключу 'z', выполнялся определенный код. На данный момент я знаю только способ через создание нового класса, наследующегося от dict, и переопределение в нём методов __init__, __setitem__, __getitem__. Но этот способ будет работать только если каждый вложенный словарь оборачивать в этот класс.
class MyDict(dict):
def __init__(self, obj):
print('Создан объект')
super(MyDict, self).__init__(obj)
def __setitem__(self, item, value):
print(f"Вы поменяли значение {item} на {value}!")
super(MyDict, self).__setitem__(item, value)
def __getitem__(self, item):
print(f"Пытаемся получить значение {item}")
return super(MyDict, self).__getitem__(item)
Может быть существует какой-то другой способ, так как этот мне не очень подходит?