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

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


>
>
>
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. Оказывается, поиск по классу следует его порядку разрешения метода до того, как он осуществляется в его метаклассе:





Содержание раздела