2010-01-18 2 views
3

Если я хочу, чтобы класс имел поведение в словаре, почему я должен унаследовать от dict или UserDict?Есть ли разница между UserDict и Dict?

+0

Каков самый низкий общий знаменатель для версий Python, который вы должны поддерживать? –

ответ

8

Вы можете наследовать от dict в любом Python, что это версия 2.2 или лучше, но вы должны переопределить каждый метод интерес - например, ваше переопределение __getitem__ будет не быть использованы get если не вам также переопределить этот и т. д. и т. д.

UserDict.DictMixin смесь в восходит гораздо дальше, и позволяет реализовать лишь несколько методов: другие методы, так как поставляются смесь-в, будет забрать и использовать свое собственное переопределение. Заметим, однако, из the docs:

Начиная с Python версии 2.6, то рекомендуется использовать collections.MutableMapping вместо DictMixin.

Новые ABCs (абстрактные базовые классы) в collections модуле имеют много те же преимущества, что и старый добрый UserDict.DictMixin, более широкое применение и более регулярностью.

Смежные вопросы