NameError для функции при вызове ее в другой функции класса - PullRequest
0 голосов
/ 03 апреля 2019

Я разработал некоторый код для проблемы на leetcode.com .Был класс и функция, и я добавил еще одну функцию matchingBrackets.Тем не менее, когда я запускаю код, у меня возникает ошибка NameE в этой функции.Действительно, кажется, что он не определен.

class Solution:

    def matchingBrackets(self, s:str) -> bool:
        lefts = ['(','{','[']
        rights = [')',']','}']
        if s[0] in lefts:
            function(s[1:],type)
        elif s[0] in rights:
            if s[0] == bracket:
                return True
            else:
                return False
        else:
            print("different from brackets")
            s = s[1:]

    def isValid(self, s: str) -> bool:

        return matchingBrackets(s[1:],bracket)

При запуске кода на консоли leetcode он возвращает:

NameError: name 'matchingBrackets' is not defined
Line 19 in isValid (Solution.py)
Line 30 in __helper__ (Solution.py)
Line 44 in _driver (Solution.py)
Line 55 in <module> (Solution.py)

1 Ответ

0 голосов
/ 03 апреля 2019

Я думаю, что есть пара вопросов.

Когда вы обращаетесь к методам, определенным в том же классе, что и def method(self, arg1, arg2):, вам необходимо дополнительно использовать этот метод как self.method(arg1, arg2), если вы используете его из того же класса. То есть ваш метод isValid должен возвращать self.matchingBrackets(s[1:],bracket).

Кроме того, вы определяете matchingBrackets как метод, принимающий только один аргумент, кроме self, но затем вы передаете ему два аргумента s[1:] и bracket. По этой же причине неясно, на что ссылается переменная bracket.

Кроме того, я не очень понимаю, на что ссылается function(s[1:],type). Определено ли это вне фрагмента кода, который вы опубликовали?

Наконец, я не уверен, что логика функции делает то, что задает вопрос Leetcode.

...