Python 如果超类有自定义的深度副本,如何定义子类的深度副本

Python 如果超类有自定义的深度副本,如何定义子类的深度副本,python,inheritance,copy,subclass,deep-copy,Python,Inheritance,Copy,Subclass,Deep Copy,我的超类A有一个方法copy(),它是一个定制的深度复制函数。子类B希望继承这个深度复制函数,同时深度复制它自己的成员和方法 在下面的解释示例中,copy函数只复制B的“A部分”。我的问题是如何修改copy函数,以便同时深度复制成员T和方法addOn()以及其他潜在的类功能 class B(A): def __init__(self, T): super().__init__() self.T = T def addOn(self):

我的超类A有一个方法copy(),它是一个定制的深度复制函数。子类B希望继承这个深度复制函数,同时深度复制它自己的成员和方法

在下面的解释示例中,copy函数只复制B的“A部分”。我的问题是如何修改copy函数,以便同时深度复制成员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实例的一部分


另外,如果将类的复制函数实现为
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu()
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu.

覆盖父对象的复制函数和访问属性,而不是父对象访问子对象的属性,怎么样。@mad\u我想深度复制B的所有成员和功能,无论它是源于A还是BAbout“however\u you\u copy\u A\u T\u instance”,你的意思是使用class、new、dict和memo之类的东西吗?你能详细说明一下吗?父类A来自图书馆外。我不知道他们为什么不直接覆盖