让我们先说这个问题,你应该使用__new__而不是__init__用于子类化不可变对象.
话虽如此,让我们看看以下代码:
class MyTuple(tuple):
def __init__(self, *args):
super(MyTuple, self).__init__(*args)
mytuple = MyTuple([1,2,3])
Run Code Online (Sandbox Code Playgroud)
这适用于python2,但在python3中,我得到:
Traceback (most recent call last):
File "tmp.py", line 5, in <module>
mytuple = MyTuple([1,2,3])
File "tmp.py", line 3, in __init__
super(MyTuple, self).__init__(*args)
TypeError: object.__init__() takes no parameters
Run Code Online (Sandbox Code Playgroud)
为什么会这样?python3有什么变化?