[英]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.