[英]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 type
和obj
, super
返回一个绑定 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.