簡體   English   中英

python:復制常見的基類變量

[英]python: copy common base class variables

有沒有辦法只復制(或創建並像copy.copy()這樣復制)僅繼承自同一基類的兩個類的基類變量?

目的是避免將來需要實現每次在基類中添加/刪除變量時進行復制和修改的方法。

import copy

class Base:
    def __init__(self, val):
        self.common_var=val

class SubclassA(Base):
    def __init__(self, val, base_val):
        super(SubclassA, self).__init__(base_val)
        self.var_a=0

class SubclassB(Base):
    def __init__(self, val):
        self.var_b=0

if __name__ == '__main__':
    a_1 = A(1, 2)
    a_2 = copy.copy(a_1)   # Example coping all variables

    b_1 = SubclassB(3)
    # Now, how to copy to a_1 base class variables to variable of the type SubclassB?

像這樣的行: a_2 = copy.copy(a_1)將執行普通的淺表復制。 運行時的實例被認為是“平面的”,也就是說,實例就像是字典,其中的鍵是變量的名稱,而繼承就像將字典合並在一起。

因此, a_2現在將引用SubclassA新實例

注意:

class SubclassB(Base):
    def __init__(self, val):
        super().__init__(val)
        self.var_b = 0

b_1 = SubclassB(a_1)  # note the parameter is a_1
b_2 = copy.copy(b_1)

b_1b_2引用了SubclassA相同實例。 您可能要使用deepcopy產生所有新實例。

暫無
暫無

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

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