python - 在 Enum 类型上使用元类,并让 Pylint 满意
问题描述
我有以下Enum
子类;该类本身是必需的,因此__str__
返回值的字符串表示形式(不是完全限定的名称),并且元类在那里确保我使用的是唯一值。
from enum import Enum
class StringifiedEnumMeta(type(Enum)):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
assert len(set(self.__members__.keys())) == len(set(self.__members__.values()))
class StringifiedEnum(Enum, metaclass=StringifiedEnumMeta):
def __str__(self):
return str(self.value)
这似乎按预期工作;例如,以下代码失败并显示AssertionError
:
class MyEnum(StringifiedEnum):
KEY1 = 'value'
KEY2 = 'value'
但是,PyLint 报告我正在使用无效的元类:
mwe.py:8:0: E1139: Invalid metaclass 'StringifiedEnumMeta' used (invalid-metaclass)
这真的是一个无效的元类,还是 PyLint 在这里搞错了?