__setitem__ не видит действий вложенных словарей

from collections import UserDict   class Matching(UserDict):     def __setitem__(self, key, value):         print(key, value)         super(Matching, self).__setitem__(key, value)   def main():     m = Matching({"user": "milkiweed", "settings": {"notifications": True, "online": False}})     m["settings"]["notifications"] = False 

Ошибка заключается в следующем:

При инициализации класса метод __setitem__ отрабатывает корректно и мне отображаются все ключи и их значения, НО, последующий вызов (см. последнюю строку кода) должен тоже триггерить этот метод, однако никакие принты не вылазят на экран, хотя значение изменяется вполне себе корректно.

Как можно зафиксировать именно момент изменения ключа? Почему данное явление случается лишь в кейсе с вложенными словарями, т.к если провести аналогичную операцию без учета вложенности, все выполняется корректно и я получаю оповещения об этом.