python:复制公共基类变量

时间:2018-01-31 07:56:16

标签: python

有没有办法复制(或创建和复制像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?

1 个答案:

答案 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_1b_2都引用了SubclassA相同的实例。您可能希望使用deepcopy来生成所有新实例。