-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

3 に答える 3

6

x は正しくインスタンス化されていないため、引数としてカウントされていないと推測します。

x = DoublyLinkedList()

いいえ

x = DoublyLinkedList

括弧を含まない場合、DoublyLinkedListモジュール オブジェクトが x に割り当てられ、新しいオブジェクトは作成されません。

于 2013-03-04T21:57:12.840 に答える
3

あなたが書くとき

x = DoublyLinkedList

クラスのインスタンスではなく、にクラスDoublyLinkedListを割り当てます。インスタンスメソッドであるため、クラスで直接呼び出すことはできません。代わりに、使用する必要がありますxadd_head

x = DoublyLinkedList()
x.add_head(1)

selfこのようにして、 python は で置き換えることができx、呼び出しに 2 つの引数が与えられます。

于 2013-03-04T21:58:31.363 に答える
1

x に代入するときは、オブジェクトのインスタンスを作成する必要があります

 x = DoublyLinkedList()

クラスはオブジェクトとして有効であるため、前者の構文 (DoubleLinkedList) が許可されます。

于 2013-03-04T22:04:02.633 に答える