python - `dir()` 显示具有重复属性的 Enum 元素 (python3.4)

标签 python enums

我正在玩枚举。特别是,我从 enum 中获取了这段代码。文档:

from enum import Enum
class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3   

然后,在 Color.RED 上调用 dir():

In [2]: dir(Color.RED)
Out[2]: ['__class__', '__doc__', '__module__', 'name', 'name', 'value', 'value']

如您所见,有两个相同的属性 - namevalue

来自 dir() 的文档:

[...] With an argument, attempt to return a list of valid attributes for that object.

那么为什么 dirColor.RED 注册为具有相同名称的相同属性,它们有何不同?

最佳答案

dir(thing) 基本上只是 sorted(thing.__dir__()),并且 thing.__dir__ 可以返回几乎任何内容。枚举有一个自定义的 __dir__ 实现,该实现已经更改了几次;在 3.4 中,that __dir__ implementation不小心将 'name''value' 放入列表中两次,一次是明确的,一次是通过 MRO 搜索进行的。

关于python - `dir()` 显示具有重复属性的 Enum 元素 (python3.4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45451631/

相关文章:

java - 切换枚举值 : case expressions must be constant expressions

c - C 中的枚举类型变量声明

编程到接口(interface)的Java单例枚举?

python - 在Python中检查文件校验和

python - exception_on_overflow参数不起作用? PyAudio的

python - 是否必须引用 MySQL 查询中的每个值?

objective-c - Swift - 带有button.tag的枚举?

python - 通过为缺失条目添加特殊值来对齐两个列表

python - 如何让 Django 模板引擎在内存模板中呈现?

c# - 将带有 FlagsAttribute 的枚举解析为 SqlParameter