我搜索了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)
答案 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