当我创建一个mixin类来扩展__init__
的逻辑时,通常要做的事情是:
class ExtraValuemixin:
def __init__(self, *args, **kwargs) -> None:
super().__init__(*args, **kwargs)
# some extra initialization
self._extra_value = 1
def retrieve_extra_value(self):
return self._extra_value
然而,这在mypy看来是错误的,因为它说:
^{pr2}$我明白了,在object
的构造函数签名中没有*args
或{
完整示例:
class ExtraValuemixin:
def __init__(self, *args, **kwargs) -> None:
super().__init__(*args, **kwargs)
# some extra initialization
self._extra_value = 1
def retrieve_extra_value(self):
return self._extra_value
class ParentObj:
def __init__(self, value):
self.value = value
class ChildObj(ExtraValuemixin, ParentObj):
pass
obj = ChildObj(value=5)
print(obj.retrieve_extra_value())
目前没有回答
相关问题 更多 >
编程相关推荐