考虑以下代码:
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)
另一方面,从 a或 aFoo
继承的完全相同的代码可以正常工作。我可以通过在 Foo 类中实现我自己的方法来使 deepcopy 调用工作,但是有人可以指出我这里到底发生了什么吗?为什么继承自其他内置类时会失败,但继承自其他内置类时不会失败?list
dict
__deepcopy__
deepcopy()
Foo
deque