【问题标题】:Python enum34 access by namePython enum34 按名称访问
【发布时间】:2015-09-22 14:50:31
【问题描述】:

我在 Python 2.7 中使用 Enum backport enum34

根据文档,应该可以使用项目访问按名称访问枚举成员。也就是说,以下应该起作用:

from enum import Enum

class Foo(Enum):
    bar = 1
    baz = 2

print(Foo['bar'])

但是,当我运行代码时,我在最后一行得到了这个错误:

TypeError: 'type' 对象没有属性 '__getitem__'

我在这里遗漏了什么,或者这个功能只是没有在 2.7 反向移植中实现吗?

【问题讨论】:

  • 为我工作(Python 2 和 Python 3)。
  • @vaultah:我刚刚在一个新的处女 virtualenv 中测试了它,我只安装了 enum34 并且它在那里工作。那么也许与其他一些包有冲突?知道如何追踪吗?
  • import enum; print(enum.__file__) 告诉你什么是进口的?您可能在其他地方安装了不同的模块。然后将该文件与新的 virtualenv lib/python2.7/site-packages/enum/ 包内容进行比较,看看是否有旧版本。
  • @MartijnPieters 是的,它确实使用了不同的模块。感谢您的帮助。

标签: python python-2.7 enums backport


【解决方案1】:

您可能与 Enum 模块发生冲突。试试这个:

pip 卸载枚举

同时安装了EnumEnum34,这不起作用。卸载Enum 后,它就像一个魅力。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-10
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 2019-04-27
    相关资源
    最近更新 更多