Python如何遍历StrEnum而不进行liner(PyCharm检查)未解决的引用

问题描述 投票:1回答:1

[我已经按照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

我如何让我的小妹妹不抱怨?

问题似乎是短绒未在Pycharm unresolved reference on enum内正确检查。我认为解决方案可能是在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项投票,所以我不确定它是否会很快得到解决。

[如果有人有一个好的解决方案可以在问题解决之前使用,我仍然很感兴趣。

python enums pycharm static-analysis
1个回答
1
投票

这是一个已知问题,请投票给PY-36205(在问题标题旁边的竖起大拇指)

© www.soinside.com 2019 - 2024. All rights reserved.