繁体   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