我已经按照Python3.6enum
文档第^{StrEnum
(即强制Enum
成员成为str
)
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}.")
这在运行时运行良好。但是,我的linter抱怨在引用name
和value
属性时存在未解析的引用:
我怎样才能让我的皮棉不抱怨?
问题似乎是在StrEnum._member_map_
内没有正确检查过梁。我认为解决方案可能是重写StrEnum
中的dunder方法,但不确定使用哪个方法
变通解决方案
这里是我通过使用__members__
属性以显式方式访问成员而找到的一个解决方法
for enum_member_name, enum_member in TestStrEnum.__members__.items():
print(f"name = {enum_member.name}, value = {enum_member.value}.")
我的linter是PyCharm 2019.2.6 CE
的代码检查
**编辑**
根据@user2235698的回答,这似乎是PyCharm的一个已知问题:PY-36205,于2019年5月提出。由于这个问题目前只有6票(截至2020年4月11日),我不确定它是否会很快得到解决
如果有人有一个好的解决方案,可以使用,直到问题得到解决,我仍然感兴趣
这是一个已知的问题,请投票给https://youtrack.jetbrains.com/issue/PY-36205(在问题标题附近竖起大拇指)
相关问题 更多 >
编程相关推荐