簡體   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