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

标签 python inheritance copy subclass deep-copy

我的父类(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/

相关文章:

python - 如何使用 Spawning 部署 Django

python - 仅当在文本框中时,如何将 Enterkey <Return> 绑定(bind)到按钮?

validation - Symfony2 UniqueEntity 实体继承验证错误

c - C 中跳过了 getchar() 和 scanf()

python - 使用 ZooKeeper 管理正在处理或已处理的任务

python - 在虚拟环境中安装 ipython

c# - 用虚拟方法覆盖抽象方法

Ruby Monk - 了解继承 - 不接受替代解决方案?

excel - 将表格数据从网页复制到 Excel 的 VBA 代码

ant - 我可以使Ant复制任务特定于操作系统吗?