python - 如何迭代 Python 枚举而忽略“已弃用”的枚举?
问题描述
如果我有一个像这样设置的枚举类
class fruits(enum.IntEnum):
apples = 0
bananas = 1 # deprecated
pears = 2 # deprecated
strawberries = 3
有没有办法动态获取未弃用的枚举(基本上只获取苹果和草莓?它们仅通过注释标记,我不想创建一组“弃用”通知
解决方案
您需要一些额外的代码来支持该用例。我将使用1显示它:aenum
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 stdlibEnum
、enum34
backport和Advanced Enumeration ( aenum
) 库(stdlib 的直接替代品enum
)的作者。
推荐阅读
- c# - ImageButton 不在网格列中居中
- javascript - angular和nodejs文件之间的连接
- java - 如何分组和连接值?
- java - “app-release.apk”如何更改这个默认生成的apk名称,允许之后安装?
- c# - 在 .net core / webpack web 应用程序中注入 css 样式的最佳实践
- excel - 跟踪正在使用数据库更新的 Excel 工作簿的更改。(非共享工作簿)
- jquery - $.ajax 不工作?我如何在 jQuery onclick 函数中调用 ajax?
- django - 如何从 djnago 中的相关表中检索数据
- python - 我一直在 Swift 中使用一个具有出色返回闭包的函数
- python - Tensorflow:将未知大小的张量拆分为给定大小的块