TypeError:只接受2个参数(给定1个)

2024-04-19 02:58:38 发布

您现在位置:Python中文网/ 问答频道 /正文

class DLLNode(object):

    def __init__(self, data, prev_link, next_link):  
        self.data = data
        self.prev_link = prev_link
        self.next_link = next_link


class DoublyLinkedList(object):

    def __init__(self):
        self.head=None
        self.tail=None

    def add_head(self, add_obj):
        self.head=DLLNode(add_obj,None,self.head)

>>> x=DoublyLinkedList
>>> x.add_head(1)
Traceback (most recent call last):
  File "<pyshell#20>", line 1, in <module>
    x.add_head(1)
TypeError: add_head() takes exactly 2 arguments (1 given)

Tags: selfnoneaddobjdataobjectinitdef
3条回答

指定给x时,需要创建对象的实例

 x = DoublyLinkedList()

前一种语法(DoubleLinkedList)是允许的,因为类作为对象是有效的。

当你写作时

x = DoublyLinkedList

将类DoublyLinkedList分配给x,而不是它的实例。add_head作为实例方法,不能直接在类上调用。相反,你需要使用

x = DoublyLinkedList()
x.add_head(1)

这样,python就可以用x替换self,您的调用将有两个参数。

猜测x不算参数,因为它没有被正确实例化。

x = DoublyLinkedList()

不是

x = DoublyLinkedList

不包括parens将DoublyLinkedList模块对象分配给x,它不会创建新对象。

相关问题 更多 >