【问题标题】:Python NameError 8Python名称错误8
【发布时间】:2018-07-24 13:56:50
【问题描述】:

我正在尝试在 Python 中编写一个包含 2 个函数的类,如下所示:

class Arithmetic(Enum):
    add = 1
    addi = 2
    sub = 3
    lui = 4
    auipc = 5

    def parse(inst, *argv):
        if inst == "add":
            return calculate_add(argv)
        elif inst == "addi":
            pass
        elif inst == "sub":
            pass
        elif inst == "lui":
            pass
        elif inst == "auipc":
            pass

    def calculate_add(*argv):
        return argv[0] + argv[1]

我不断收到此错误: NameError:未定义名称“calculate_add”。我做错了什么?

【问题讨论】:

  • 这是您代码中的确切缩进吗?
  • 我已经检查了缩进,是的,我复制粘贴了它
  • 那么这些函数不是你类的成员。
  • @VladCiotlaus:您粘贴的不能是您的真实代码,因为它在语法上不是有效的 Python;您需要在 class: 行之后至少缩进一行,而您不需要。
  • @DSM 我有正确的缩进,如果我删除 calculate_add 函数并直接在解析函数中使用加法,它可以工作,但我需要向该函数添加更多,我真的不认为这是关于缩进

标签: python enums nameerror


【解决方案1】:

在您的代码中,您在parse 函数之后定义了calculate_add 。因此,当您在 parse 函数中运行 calculate_add 时,Python 无法识别它,因为它尚未定义。 要修复它,请在定义 parse 之前定义 calculate_add

【讨论】:

  • 你不需要在上面的文件中物理定义一个函数,它被调用:名称只需要在使用时是可解析的。
【解决方案2】:

我相信您必须在尝试访问该函数之前声明它。 ? (不像Java那么酷)

【讨论】:

    猜你喜欢
    • 2016-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多