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