在类的另一个函数中调用该函数时发生NameError

时间:2019-04-03 16:35:55

标签: python-3.x nameerror

我为a problem on leetcode.com开发了一些代码。有一个类和一个函数,我添加了另一个函数matchingBrackets。但是,当我运行代码时,此函数存在一个NameError。确实,似乎没有定义。

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 :(得分:0)

我认为有两个问题。

在引用与Cutout2D(..., copy=True)相同的类中定义的方法时,如果要使用同一类中的方法,则需要进一步将该方法用作def method(self, arg1, arg2):。也就是说,您的self.method(arg1, arg2)方法需要返回isValid

此外,您将self.matchingBrackets(s[1:],bracket)定义为一种方法,除了matchingBrackets之外仅接受一个参数,然后将两个参数selfs[1:]传递给它。这也是为什么不清楚变量bracket指的是什么。

而且,我不太了解bracket指的是什么。它是在您发布的代码段之外定义的吗?

最后,我不确定函数的逻辑是否符合Leetcode问题的要求。