[英]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_1
和b_2
引用了SubclassA
的相同實例。 您可能要使用deepcopy
產生所有新實例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.