Leo*_*ark 12 python inheritance slots python-dataclasses
我正在尝试使用slots=TruePython 3.10.5 中的数据类调用超类方法。
from dataclasses import dataclass
@dataclass(slots=True)
class Base:
def hi(self):
print("Hi")
@dataclass(slots=True)
class Sub(Base):
def hi(self):
super().hi()
Sub().hi()
Run Code Online (Sandbox Code Playgroud)
我收到以下错误。
Traceback (most recent call last):
File "...", line 16, in <module>
Sub().hi()
File "...", line 13, in hi
super().hi()
TypeError: super(type, obj): obj must be an instance or subtype of type
Run Code Online (Sandbox Code Playgroud)
slots=True如果我从 中删除Sub,或者手动将其设为非数据类,则效果很好__slots__。如果我改为执行这些操作,错误仍然存在Base。
Sub.__mro__是(<class '__main__.Sub'>, <class '__main__.Base'>, <class 'object'>)是isinstance(Sub(), Base)。True