繁体   English   中英

Python 多级 inheritance 仅初始化基础 class

[英]Python multilevel inheritance initialize only the base class

class A:
    def __init__(self) -> None:
        print("s")

class B(A):
    def __init__(self) -> None:
        print("s1")
        super().__init__()


class C(B):
    def __init__(self) -> None:
        super().__init__()

C()

在这里我正在初始化 B class 但在这种情况下我想单独初始化基数 class A。 我怎样才能做到这一点?

super() function 有两个参数形式。

 super([type[, object-or-type]])

如果给定两个 arguments typeobjsuper返回一个绑定 object 表示obj的一个版本,其超类解析将从type开始。 通常, C中的super().__init__()基本上等同于super(C, self).__init__() 但是您可以提供B作为方法解析的起点,以便仅考虑 MRO 中比B更远的事情。

class C(B):
    def __init__(self) -> None:
        super(B, self).__init__()

话虽如此,这方面的用例很少。 如果您正在部分初始化 object 并尝试对它的父类之一进行猴子修补,那么这是一个很好的迹象,表明C不应该是B的子类,或者您的体系结构有更大的缺陷。 所以,一般来说,如果您发现自己处于这种情况,请考虑重构。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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