2013-03-04 229 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)被允許,因爲類是作爲對象有效。

相關問題