2013-03-04 244 views
-2
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) 
+4

关于你在做什么而不仅仅是一些代码的一点解释将是问你问题的更好方法。目前,读者必须猜测这个问题。 – Rodrigue 2013-03-04 22:04:16

回答

6

猜测了,因为它没有得到正确的实例x被不计算作为参数。

x = DoublyLinkedList() 

x = DoublyLinkedList 

不包括括号的DoublyLinkedList模块对象分配给X,它不会创建一个新的。

3

当你写

x = DoublyLinkedList 

你的类分配给DoublyLinkedListx,而不是它的一个实例。 add_head是一个实例方法,它不能直接在类上调用。相反,你需要使用

x = DoublyLinkedList() 
x.add_head(1) 

这样,蟒蛇就能够替代selfx,你将有2个参数到你的电话。

1

您需要创建对象的实例分配给X

x = DoublyLinkedList() 

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

相关问题