有没有办法复制(或创建和复制像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?
答案 0 :(得分:0)
像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
来生成所有新实例。