Python 3.0+collectionsпонятие
collections.UserDict
обёртки типов
Обёртка над dict с содержимым в атрибуте .data; основа для собственных словарных классов через наследование (в отличие от прямого наследования dict, все методы идут через .data).
Синтаксис
class MyDict(collections.UserDict): ...
Смысл обёртки — в наследовании: если унаследоваться от dict напрямую, переопределённый __setitem__ тихо обойдут update(), setdefault() и сам конструктор, потому что они реализованы на C и пишут в хранилище мимо ваших методов; UserDict проводит через ваш код каждую запись. Плата — скорость и то, что isinstance(obj, dict) даёт False: код, проверяющий тип, ваш объект не примет, туда отдавайте .data.
Примеры
from collections import UserDict
d = UserDict({'a': 1})
d['b'] = 2
print(d['a'], d['b'], isinstance(d.data, dict)) # → 1 2 True
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности