python - 类 'Enum' 没有 'POWER' 成员 pylint(no-member)

标签 python python-3.x enums constants enumeration

我正在尝试使用此函数自动枚举多个常量,并在最后一行给出错误:

Class 'Enum' has no 'POWER' member pylint(no-member)

代码是:

from enum import Enum 

def enum(*sequential, **named):
    enums = dict(zip(sequential, range(len(sequential))), **named)
    return type('Enum', (), enums)

meas = enum("HARMONIC","POWER","VRMS")

print (meas.POWER) #i expected: >1 (type int)

我不明白这个问题。我想要一个解决方案或其他形式来执行此操作。谢谢。

最佳答案

此代码不会产生错误,您的 linter 正在提示,并且您不能指望您的 linter 理解动态创建的类。忽略你的 linter。

因此,为了方便起见,Enum 类已经提供了您尝试重新创建的内容,其 API 类似于 collections.namedtuple:

>>> from enum import Enum
>>> Meas = Enum("Meas", "HARMONIC POWER VRMS")
>>> Meas.POWER
<Meas.POWER: 2>

我认为 Enum 既是基类又是类工厂是不寻常的。

请注意,如果您只是增加您使用的范围,您自己的解决方案会给您一个大于 1 的数字:

range(1, len(sequential) + 1))

关于python - 类 'Enum' 没有 'POWER' 成员 pylint(no-member),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59448389/

相关文章:

JAVA:按序号返回枚举对象名称

python - 仅使用 TCP 的 Scapy DNS 请求格式错误

python - 合并文件权限

python - 最有效的字符串相似度度量函数

python - Django 最喜欢/比较的功能

python - 如何通过在 Linux 中双击 Anaconda 解释器来运行 .py 文件?

python - 在绘图外显示一行文本

python - Pyspark:线程 heartbeat-receiver-event-loop-thread 中未捕获的异常

c++ - 翻译枚举值 Qt 的字符串表示形式

java - 给定一个 `Class` 对象,获取对 `toString` 的方法引用