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)
答案 0 :(得分:6)
猜测x不算作参数,因为它没有得到正确的实例化。
x = DoublyLinkedList()
不是
x = DoublyLinkedList
不包括parens将DoublyLinkedList
模块对象分配给x,它不会创建新对象。
答案 1 :(得分:3)
写作时
x = DoublyLinkedList
您将班级DoublyLinkedList
分配给x
,而不是它的实例。 add_head
是一个实例方法,不能直接在类上调用它。相反,您需要使用
x = DoublyLinkedList()
x.add_head(1)
通过这种方式,python将能够用self
替换x
,并且您的呼叫将有2个参数。
答案 2 :(得分:1)
分配给x
时,需要创建对象的实例 x = DoublyLinkedList()
允许使用以前的语法(DoubleLinkedList),因为类作为对象有效。