self и передача аргументов в функцию python

Вот есть такой код:

class ListNode:
     def __init__(self, x):
         self.val = x
         self.next = None

def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
    dummy = cur = ListNode(0)
    carry = 0
    while l1 or l2 or carry:
        if l1:
            carry += l1.val
            l1 = l1.next
        if l2:
            carry += l2.val
            l2 = l2.next
        cur.next = ListNode(carry%10)
        cur = cur.next
        carry //=10
    return dummy.next
l1 = [2, 4, 3]
l2 = [5, 6, 4]
addTwoNumbers(l1, l2)

Но пишет, что одного аргумента addtwonumbers не хватает. Как я должен передать аргументы в функцию, чтобы она заработала?


Ответы (1 шт):

Автор решения: MaxU

У вас лишний параметр self в функции addTwoNumbers.

Но лучше перегрузите оператор + для вашего класса:

class ListNode:
     def __init__(self, x):
         self.val = x
         self.next = None

     def __add__(self, other: ListNode) -> ListNode:
         val = self.val + other.val
         next = ...
         return self.__init__(val, next)

после этого можно будет делать так:

l1 = ListNode(...)
l2 = ListNode(...)
l3 = l1 + l2
→ Ссылка