簡體   English   中英

在 Python 中初始化基礎 class 中的公共屬性

[英]Initializing common attributes in the base class in Python

我有以下抽象類的情況 - 有一個基礎 class A,比如說,繼承類 B 和 C。 B 和 C 有一些屬性以自己的方式初始化,但是,有些屬性對於所有繼承的類應該具有相同的初始值。 有沒有辦法在基礎 class 中初始化它們,而無需在每個繼承的 class 初始化中復制代碼? 這是我第一次在 Python 中使用抽象類,在互聯網上挖掘了幾天后,我仍然找不到合適的解決方案。

例子:

class A(metaclass=ABCMeta):
    @abstract_attribute
    def name(self):
        pass

# Value should be set as 0 initially for all the classes
#Should it be written in the base __init__ somehow?
    @abstract_attribute
    def value(self):
        return 0

class B(A):
    def __init__(self):
        self.name = "class B"
        self.value = 0    # this is the duplicating line

class C(A):
    def __init__(self):
        self.name = "class C"
        self.value = 0    # this is the duplicating line

您可以在 class A 的__init__方法中初始化值並在 B class 中調用super內置函數:

class A():
    def __init__(self):
        self.value = 1
        
    def name(self):
        pass

class B(A):
    def __init__(self):
        super().__init__()
        self.name = "class B"

b = B()
print(b.value)

打印:

1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM