Питон - статьи



             

Листинг 6. Комбинирование базового класса и метакласса


>>> class M(type): ... a = 'M.a' ... x = 'M.x' ... >>> class B(object): a = 'B.a' ... >>> class C(B): __metaclass__=M ... >>> c=C()

Графически:





Рис. 2. Комбинированные базовый класс и метакласс



Согласно предшествующему объяснению, мы могли бы представить, что C.a разрешился бы либо в M.a, либо в B.a. Оказывается, поиск по классу следует его порядку разрешения метода до того, как он осуществляется в его метаклассе:






Содержание  Назад  Вперед