我有2个类,我们称它们为Class1和Class2(Class1),Class2派生自Class1。
在Class1中,copy.deepcopy运行良好,我不想要在Class1上实现 deepcopy 方法。
现在,我有一个实例i2 = Class2(someParameters)。我想像在Class1中一样对i2进行深度复制。
我无法调用copy.deepcopy(i2),因为这会像在class2的实例中那样深入复制i2(在我的情况下会出现签名问题)。
我无法调用super()。 deepcopy (i2),因为在class1中找不到 deepcopy ,而且会回到copy.deepcopy(i2)的计算作为class2的一个实例,我们进入一个无限循环。
如何继续调用内置的copy.deepcopy(i2),将i2作为Class1的一个实例?
感谢您的想法,Laurent。
编辑:正如评论中所提到的,如果我只是调用copy.deepcopy,则显示签名问题的代码示例
Traceback (most recent call last):
File "essaiDebug7.py", line 18, in <module>
copy.deepcopy(instanceClass2)
File "/usr/lib/python2.7/copy.py", line 190, in deepcopy
y = _reconstruct(x, rv, 1, memo)
File "/usr/lib/python2.7/copy.py", line 329, in _reconstruct
y = callable(*args)
File "/usr/lib/python2.7/copy_reg.py", line 93, in __newobj__
return cls.__new__(cls, *args)
TypeError: __new__() takes exactly 2 arguments (1 given)
口译员的回答:
{{1}}
答案 0 :(得分:0)
如何创建Class1
的对象,而不是继承Class2 in Class1
?像:
class Class2(object):
def __init__(self):
self.class_1 = Class1()
# Then deepcopy
copy.deepcopy(class_2.class_1)
注意:如果您可以分享真实场景,那就太棒了。因为,根据您提到的问题,我不认为您的类是可继承的。如果是,我不明白为什么你只想复制父类?