メタクラスの気になるアレ
ちょっと前に書いた 多重継承を制限してみる - プログラマのネタ帳 で、メタクラスに関してちょっと気になっていたことを検証。
それは、 メタクラスの継承ツリーはどうなるの? ってこと。
これが気になっていたので以下のコードで検証。
結果を簡単にまとめると、メタクラスを適用したクラス同士を多重継承する際は、適用したメタクラス同士が直接の継承関係にないと
<class '__main__.MetaClassAA'> Traceback (most recent call last): File "metameta.py", line 47, in <module> class DerivedAB(BaseMetaA, BaseMetaB): TypeError: Error when calling the metaclass bases metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases
なんてエラーが出るということ。
気をつけましょう。