【问题标题】:How to fix Python Enum - AttributeError(name) from None error?如何修复 Python Enum - AttributeError(name) from None 错误?
【发布时间】:2019-06-10 19:39:25
【问题描述】:

尝试在 Python 3.7.3 中使用枚举,得到以下错误。已经尝试安装 - 和卸载 - enum34,但它仍然无法正常工作。在虚拟环境中完成所有操作(如错误所示)。

我还能做些什么来解决这个问题(除了使用this question 中所示的另一个枚举实现)?

#enum import:
from enum import Enum

# enum definition:
class Status(Enum):
    on: 1
    off: 2

# enum utilisation (another class, same file):
self.status = Status.off

# error:
File "C:\dev\python\test\venv\lib\enum.py", line 349, in __getattr__
AttributeError(name) from None
AttributeError: off

【问题讨论】:

  • 这是一个由最近添加的语法支持类型注释引起的有效问题。请重新打开它。

标签: python enums virtualenv


【解决方案1】:

定义枚举的正确语法是:

class Status(Enum):
    on = 1
    off = 2

不是on: 1

【讨论】:

    【解决方案2】:

    在您的定义中,使用= 为属性分配值,而不是:

    # enum definition:
    class Status(Enum):
        on = 1
        off = 2
    

    【讨论】:

    • 就是这样,但你来晚了抱歉:/
    • 您能否解释一下为什么 OP 的原始语法没有错误?
    • @EthanFurman 什么?你为什么说它“不是错误”?实际上这是一个语法错误;您使用 = 分配值,而不是 :
    • 3.7 中没有——它会创建注释,这就是 Status 为空的原因。
    • 呵呵——那是你来研究和教育我们的!如果你愿意,当然可以。根据您回答的深度,我很高兴发布 100 - 500 声望之间的赏金。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    相关资源
    最近更新 更多