[英]python inhInheritance and Overriding __init__
我知道很多人问过同样的问题,但我有点困惑,我有一个抽象的 class 和__init__
class FirstTry(ABC):
def __init__(self) -> None:
return NotImplemented
第二个 class,
class SecondTry(FirstTry):
def __init__(self, names: list, alias: dict) -> NoReturn:
if names:
self.names= names
if alias:
self.alies = alies
self.names_count = None
self.alias_alternatives = None
super().__init__(names, alias)
但是当我运行我的代码时,我得到了这个错误
TypeError: FirstTry.__init__() takes 1 positional arguments but 3 were given
您收到错误的原因是这一行:
super().__init__(names, alias)
与调用相同:
FirstTry.__init__(self, names, alias)
而FirstTry.__init__
只需要一个self
参数。
如果您要通过super()
调用FirstTry.__init__
,您需要以与其签名相匹配的方式调用它:
super().__init__()
但是尽管这不会引发TypeError
,它也没有做任何有用的事情——事实上,如果你的__init__
引发了NotImplementedError
而不是返回它,你只会得到一个未捕获的异常。
根本不定义或调用FirstTry.__init__
会更简单,因为它在此代码中没有服务 function。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.