【发布时间】: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 自己引用<class '... .mx'>?
【问题讨论】:
-
...
print(mx)? -
啊,太棒了,jonr - 能够为这样一个愚蠢的问题得到如此迅速的解脱真是太好了。我已经意识到(尽管我上面的示例另有说明)该类在初始化期间无法引用自身,因为它尚未创建。而我只是使用了错误的类名(复杂的类名,最近在末尾给出了另一个字母),这就是该类未被识别的原因。无论如何,您的答案是答案,并为此获得一分。谢谢你
标签: python-3.x class multiple-inheritance mixins super