Resolving metaclass conflicts

后端 未结 6 1226
时光取名叫无心
时光取名叫无心 2020-12-03 09:25

I need to create a class that uses a different base class depending on some condition. With some classes I get the infamous:

TypeError: metaclass conflict: t         


        
6条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-12-03 10:16

    I like doing:

    class mBase1(type):
        ...
    
    class mBase2(type):
        ...
    
    class Base1(metaclass=mBase1):
        ...
    
    class Base2(metaclass=mBase2):
        ...
    
    class mChild(type(Base1), type(Base2)):
        pass
    
    class Child(Base1, Base2, metaclass=mChild):
        ...
    

    That way if something changes with the metaclass of the bases you don't have to worry about it. type() will take care of it.

提交回复
热议问题