【问题标题】:how make super class refer to itself如何让超类引用自己
【发布时间】:2020-01-14 05:58:19
【问题描述】:

我想让一个 mixin 类在其初始化期间引用它自己的类。

如果我让它引用self.__class__,那么它指的是它混入的实例的类,而不是它自己的类。如果它指的是mx.__class__ 如果指的是类“类型”。

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 自己引用&lt;class '... .mx'&gt;

【问题讨论】:

  • ...print(mx)?
  • 啊,太棒了,jonr - 能够为这样一个愚蠢的问题得到如此迅速的解脱真是太好了。我已经意识到(尽管我上面的示例另有说明)该类在初始化期间无法引用自身,因为它尚未创建。而我只是使用了错误的类名(复杂的类名,最近在末尾给出了另一个字母),这就是该类未被识别的原因。无论如何,您的答案是答案,并为此获得一分。谢谢你

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


【解决方案1】:

我想让一个 mixin 类在其初始化期间引用它自己的类。

这个问题令人困惑,因为您问的是如何动态访问当前类,但实际上期望的是静态结果。我建议改为使用mx

【讨论】:

  • thnku 灵魂先生。这就是答案。但是 jonrsharpe 最先进入了那里。如果他能把他的答案作为答案,我会给他打勾。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-05
  • 1970-01-01
  • 2020-08-25
  • 1970-01-01
相关资源
最近更新 更多