繁体   English   中英

python inhInheritance and Overriding __init__

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM