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

Конфликты метаклассов


>
>
>
class M_A(type): pass ... >
>
>
class M_B(type): pass ... >
>
>
class A(object): __metaclass__ = M_A ... >
>
>
class B(object): __metaclass__ = M_B ... >
>
>
class C(A,B): pass # Error message less specific under 2.2 [...] TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases

Конфликта метаклассов можно избежать, вручную создав необходимый метакласс для C:





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