TypeError:list()最多需要1个参数(给定3个)用于列表类继承

时间:2016-06-17 20:57:00

标签: python

我搜索了stackoverflow中的其他帖子,甚至将它们复制到我的机器上作为回答来尝试。但是,它仍然无法投掷"TypeError"

# this is as one of other post in StackOverflow. 
class ListClass(list):
    def __init__(self, *args):
        super().__init__(self, *args)
        self.append('a')
        self.name = 'test'

我也试过通过空类。但是,如果我继承,那也失败了,我想我错过了一些东西,而不是添加更多或更多的东西?

1)这是"TypeError"是什么?为什么? 2)如何修复它?

TypeError上的进一步快照:

>>> class ListClass(list):
...     pass
...
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list() takes at most 1 argument (3 given)  

2 个答案:

答案 0 :(得分:4)

在创建ListClass对象时,您将它赋予许多参数,这就是您正在做的事情:

s = list(2,3,3)

这就是你要做的事情:

s = list([2,3,3])

在解释器上试试这个片段。

答案 1 :(得分:2)

将参数元组args传递给您的实例extend

>>> class ListClass(list):
...     def __init__(self, *args):
...         super().__init__()
...         self.extend(args)
...         self.append('a')
...         self.name = 'test'
...
>>> ListClass(1, 2, 3)
[1, 2, 3, 'a']

或者将args解压缩元组传递给super的{​​{1}},因为__init__可以使用list进行初始化

iterable

<强>更新

您可能已经完成的工作是将对象分配给名称>>> class ListClass(list): ... def __init__(self, *args): ... super().__init__(args) # one argument: tuple ... self.append('a') ... self.name = 'test' ... >>> ListClass(1, 2, 3) [1, 2, 3, 'a']

list