当我创建一个mixin类来扩展
__init__
class ExtraValuemixin:
def __init__(self, *args, **kwargs) -> None:
super().__init__(*args, **kwargs)
self._extra_value = 1
def retrieve_extra_value(self):
return self._extra_value
Too many arguments for "__init__" of "object"
*args
或
**kwargs
在
object
的构造函数签名;但这是一个mixin,它依赖于其子代的构造函数。我怎么才能让我明白?
完整示例:
class ExtraValuemixin:
def __init__(self, *args, **kwargs) -> None:
super().__init__(*args, **kwargs)
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())