【问题标题】:NameError on a function while calling for it in another function of a class在类的另一个函数中调用函数时出现 NameError
【发布时间】:2019-04-03 16:35:55
【问题描述】:

我为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)

【问题讨论】:

    标签: python-3.x nameerror


    【解决方案1】:

    我认为有几个问题。

    当您引用与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) 指的是什么。它是否在您发布的代码的 sn-p 之外定义了它?

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

    【讨论】:

      猜你喜欢
      • 2012-07-18
      • 1970-01-01
      • 1970-01-01
      • 2021-04-15
      • 2018-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多