相关疑难解决方法(0)

为什么我不能在python3中子类化元组?

让我们先说这个问题,你应该使用__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有什么变化?

python tuples subclass python-3.x

6
推荐指数
1
解决办法
955
查看次数

标签 统计

python ×1

python-3.x ×1

subclass ×1

tuples ×1