Python Glossary English

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Сообщить о неточности