deepcopy在deque的子类上失败

时间:2013-11-08 04:02:17

标签: python

请考虑以下代码:

from collections import deque
import copy
class Foo(deque):
    def __init__(self):
        super(Foo, self).__init__()

foo = Foo()
foo_copy = copy.deepcopy(foo)

此处,deepcopy(foo)失败并显示以下消息:

TypeError: __init__() takes exactly 1 argument (3 given)

另一方面,继承自Foolist的{​​{1}}完全相同的代码也可以。我可以通过在Foo类中实现我自己的dict方法来使deepcopy调用工作,但是有人可以指点我解释这里究竟发生了什么吗?为什么__deepcopy__在继承自deepcopy()的{​​{1}}上失败但在从其他内置类继承时没有失败?

1 个答案:

答案 0 :(得分:0)

老实说,我使用的最简单的方法是支持父构造函数的传递参数。

from collections import deque
import copy
class Foo(deque):
    def __init__(self, *args, **kwargs):
        super(Foo, self).__init__(*args, **kwargs)

foo = Foo()
foo_copy = copy.deepcopy(foo)

但是,我不确定它是否能够正确地定制该类。

相关问题