如果我有一个像这样设置的枚举类
class fruits(enum.IntEnum):
apples = 0
bananas = 1 # deprecated
pears = 2 # deprecated
strawberries = 3
有没有办法动态获取未弃用的枚举(基本上只获取苹果和草莓?它们仅通过评论标记,我不希望创建一组“已弃用”的通知
最佳答案
您需要一些额外的代码来支持该用例。我将使用 aenum
来展示它1:
from aenum import IntEnum
class Fruits(IntEnum):
_init_ = 'value active'
#
apples = 0, True
bananas = 1, False # deprecated
pears = 2, False # deprecated
strawberries = 3, True
#
@classmethod
def active(cls):
return [m for m in cls if m.active]
#
@classmethod
def deprecated(cls):
return [m for m in cls if not m.active]
并在使用中:
>>> list(Fruits)
[<Fruits.apples: 0>, <Fruits.bananas: 1>, <Fruits.pears: 2>, <Fruits.strawberries: 3>]
>>> Fruits.apples
<Fruits.apples: 0>
>>> Fruits.bananas
<Fruits.bananas: 1>
>>> Fruits.active()
[<Fruits.apples: 0>, <Fruits.strawberries: 3>]
>>> Fruits.deprecated()
[<Fruits.bananas: 1>, <Fruits.pears: 2>]
1 披露:我是 Python stdlib Enum
的作者, enum34
backport , 和 Advanced Enumeration (aenum
)库 (stdlib enum
的替代品)。
关于python - 如何迭代忽略 "deprecated"的 Python 枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59057421/