如何使超类指称自己

时间:2019-09-12 11:03:13

标签: python-3.x class multiple-inheritance mixins super

我想在其初始化期间使mixin类引用其自身的类。

如果我将其引用为self.__class__,则它引用的是其所混入的实例的类,而不是其自身的类。如果引用mx.__class__,则引用类'type'。

class mx:
    def __init__(self):
        print( self.__class__ )
        print( mx.__class__ )

class C( mx ):
    def __init__(self):
        super().__init__()

>>> o = C()
<class '__main__.C'>
<class 'type'>

另一方面,如果我将其创建为自己的实例,则当它引用self时,它将获得我要查找的类引用。

>>> m = mx()
<class '__main__.mx'>
<class 'type'>

如何让mx自己引用<class '... .mx'>

1 个答案:

答案 0 :(得分:1)

  

我想在其初始化期间使mixin类引用其自身的类。

这个问题令人困惑,因为您正在询问如何动态访问当前类,但实际上期望得到静态结果。相反,我建议改用mx