Ярлык от ошибки (отсутствует аргумент) к ошибке (использование класса, а не экземпляра) - PullRequest
0 голосов
/ 15 мая 2019

В коде значительной длины (для меня) я забыл скобки после класс при создании экземпляра класса, например

index = UnicodeIndex

это привело к странной ошибке вроде

TypeError: find_description() missing 1 required positional argument: 'query'

в таких строках index.find_description (запрос) Где find_description - это метод класса UnicodeIndex

Мне потребовались часы, чтобы найти причину проблемы (образец ниже иллюстрирует это):

class Noinit:
    def __init__(self, chars):
        self.chars = chars

    def find_chars(self, char):
        return char in self.chars

>>> n=Noinit
>>> n.find_chars('c')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: find_chars() missing 1 required positional argument: 'char'

Пожалуйста, помогите мне понять связь между причиной (использование класс, по ошибке вместо экземпляра класса) и следствие, ошибка «отсутствует позиционный аргумент» при вызове метода.

У меня есть очень смутное представление о том, что, поскольку класс не был создан, он не должен быть сам, когда вызывается метод, а предоставленный аргумент используется как один, таким образом, съедая все позиционные аргументы

...