gpt4 book ai didi

python - 如果父类(super class)自定义了深拷贝,如何定义子类的深拷贝

转载 作者:行者123 更新时间:2023-12-01 09:22:12 27 4
gpt4 key购买 nike

我的父类(super class)A有一个方法copy(),这是一个定制的深拷贝函数。子类B想要继承这个深拷贝功能,同时也深拷贝自己的成员和方法。

在下面的解释示例中,复制函数仅复制 B 的“A 部分”。我的问题是如何修改复制函数以便也深度复制成员 T 和方法 addOn() 以及其他潜在的类特征?

class B(A):
def __init__(self, T):
super().__init__()
self.T = T
def addOn(self):
print("additional feature")
def copy(self):
return super().copy()

最佳答案

你已经有了一个好的开始,你只需要扩展子类的复制功能:

class B(A):
...
def copy(self):
new_b = super().copy() # new_b now has all the A stuff copied
new_b.T = however_you_copy_a_T_instance(self.T)
return new_b

由于 addOn 只是一个方法,因此无需复制它 - 它隐式地是任何 B 实例的一部分。

顺便说一句,如果您将类的复制函数实现为 __copy__()__deepcopy__() 那么您的类将与内置的复制和深度复制功能一起正常工作由https://docs.python.org/3/library/copy.html提供(有关详细信息,请参阅该页末尾)。

关于python - 如果父类(super class)自定义了深拷贝,如何定义子类的深拷贝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50724504/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com