Ошибка при передаче параметров в функцию python3 - PullRequest
0 голосов
/ 12 апреля 2020

Я пишу программу связанного списка в python 3.7.7. Для этого я создал 2 класса с именами: Node и Linked List.

class Node:
def __init__(self, data):
    self.data = data
    self.next = None

Класс узла содержит структура каждого узла, то есть имеет 2 атрибута. Класс Linked List содержит следующие функции:

class LinkedList:
# UTILITY FUNCTIONS
# Function to push a node
def lpush(head_ref, new_data):

    # allocate node
    new_node = Node(new_data)

    new_node.next = head_ref
    head_ref = new_node

    return head_ref

# Function to print linked list
def lprint(node):
    count = 0
    while node != None:
        print(node.data, end=" ")
        node = node.next
        count = count + 1

В функции драйвера я создаю объект узла (заголовка) класса Node со значением -1.

head = Node(-1)

и я создал объект класса LinkedList с именем Llist

llist = LinkedList()

Теперь я пытаюсь вставить значения в связанный список, вызывая функцию lpu sh ()

for i in range(20, 0, -1):
head = llist.lpush(head, i)

но выдает следующую ошибку.

> Traceback (most recent call last):
  File "/home/subham-brc/Python-3.7.3/Python Files/Linked List/8.py", line 79, in <module>
    head = llist.lpush(head, i)
TypeError: lpush() takes 2 positional arguments but 3 were given

Любая помощь очень ценится ..

1 Ответ

1 голос
/ 12 апреля 2020

Вам необходимо добавить self в качестве первого параметра к lpush и lprint - даже если вы его не используете. Они косвенно предоставляются при каждом вызове метода для объекта LinkedList.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...