我正在使用attrs
python 包,结合继承和插槽。我想从派生方法中调用父类的方法。问题如下所示:
import attr
@attr.s(slots=True)
class Base():
def meth(self):
print("hello")
@attr.s(slots=True)
class Derived(Base):
def meth(self):
super().meth()
print("world")
d = Derived()
d.meth()
我得到:
TypeError: super(type, obj): obj 必须是类型的实例或子类型
该问题似乎是由 attrs(具有显式__slots__=()
工作的未装饰类)、插槽(常规@attr.s
装饰类工作)和普通super()
调用(super(Derived, self)
工作)的组合触发的。
我想了解super()
与显式版本的行为有何不同super(Derived, self)
,因为文档说它们“做同样的事情”