雖然pylint的提高上enum.Enum(value=..., names=...)
警告,我從枚舉DOC看到一個可以以編程方式創建一個枚舉像下面覆蓋枚舉元類初始化
import re
import enum
import termios
def termios_baud_rates():
regexp = r"(?:^|,)B(?P<rate>\d+)"
rates = sorted(map(int, re.findall(regexp, ",".join(dir(termios)))))
return {"B{:d}".format(r): r for r in rates}
BAUD_RATES = enum.Enum("BAUD_RATES", termios_baud_rates())
但我還想添加方法:
@classmethod
def valid_rate(cls, value):
return (any(value == item.value for item in cls))
我認爲這應該涉及重載metaclass __prepare__(mcls, names, bases)
以擴大基地的名稱字典,但顯然基地不是如何創建枚舉屬性。任何人有任何提示?
子類枚舉:https://docs.python.org/3/library/enum.html#restricted-subclassing-of-enumerations – slezica