[我已经按照Python 3.6 StrEnum
文档[Enum
部分]中的说明实现了str
(也将enum
成员强制为8.13.13.4 Others
。
8.13.13.4 Others
我有一个from enum import Enum
class StrEnum(str, Enum):
"""Enum where members are strings."""
的子类,在这里我使用StrEnum
循环对其进行迭代。
for
这在运行时效果很好。但是,当引用class TestStrEnum(StrEnum):
"""Test string enum."""
A = "Apple"
B = "Bananas"
for enum_ in TestStrEnum:
print(f"name = {enum_.name}, value = {enum_.value}.")
和name
属性时,我的linter抱怨一个未解决的引用:
value
我如何让我的小妹妹不抱怨?
问题似乎是短绒未在内正确检查。我认为解决方案可能是在StrEnum._member_map_
中重写dunder方法,但不确定使用哪个方法。
解决方法
这里是我通过使用StrEnum
属性以显式方式访问成员的方法来解决。
__members__
我的孩子是for enum_member_name, enum_member in TestStrEnum.__members__.items():
print(f"name = {enum_member.name}, value = {enum_member.value}.")
的代码检查。
**编辑**
[@ user2235698的回答,看来这是PyCharm的一个已知问题:PyCharm 2019.2.6 CE
,于2019年5月提出。由于此问题目前只有6项投票,所以我不确定它是否会很快得到解决。
[如果有人有一个好的解决方案可以在问题解决之前使用,我仍然很感兴趣。
这是一个已知问题,请投票给PY-36205(在问题标题旁边的竖起大拇指)