我正在玩枚举。特别是,我从 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']
如您所见,有两个相同的属性 - name
和 value
。
来自 dir()
的文档:
[...] With an argument, attempt to return a list of valid attributes for that object.
那么为什么 dir
将 Color.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/