Python deepcopy在deque的子类上失败

Python deepcopy在deque的子类上失败,python,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:\uuuu init\uuuuuu()正好接受1个参数(给定3个) 另一方面,从

考虑以下代码:

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:\uuuu init\uuuuuu()正好接受1个参数(给定3个)


另一方面,从
列表
dict
继承的
Foo
完全相同的代码可以正常工作。我可以通过在Foo类中实现我自己的
\uuuu deepcopy\uuuu
方法来实现deepcopy调用,但是有人能告诉我这里到底发生了什么吗?为什么
deepcopy()
在继承自
deque
Foo
上失败,但在继承自其他内置类时没有失败?

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

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)

不过,我不确定它是否能与您自定义该类的方式一起正常工作。

OP中的代码只是一个简单的示例,我确实在调用
super()时指定了参数。
。所以你的例子是可行的,但它并不完全符合我的需要。另外,我在这里想要的是对正在发生的事情的解释;我已经知道如何让这项工作为我所用(通过实现
\uuu deepcopy\uuuu()
)。