Python 如果超类有自定义的深度副本,如何定义子类的深度副本
我的超类A有一个方法copy(),它是一个定制的深度复制函数。子类B希望继承这个深度复制函数,同时深度复制它自己的成员和方法 在下面的解释示例中,copy函数只复制B的“A部分”。我的问题是如何修改copy函数,以便同时深度复制成员T和方法addOn()以及其他潜在的类功能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):
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来自图书馆外。我不知道他们为什么不直接覆盖