【问题标题】:How to add deprecation warning to Python enum fields?如何向 Python 枚举字段添加弃用警告?
【发布时间】:2021-12-01 14:50:38
【问题描述】:
给定以下枚举:
class MyEnum(enum.Enum):
Field1 = "Field1"
Field2 = "Field2" # should be deprecated for `Field3`
Filed3 = "Field3"
我想在一个字段中添加一个弃用警告,这样当我调用 MyEnum.Field2 或 MyEnum("Field2") 时,将返回一个 <MyEnum.Field3: 'Field3'> 枚举实例以及一个弃用警告。
这样做的正确方法是什么?
有没有可以做到这一点的python语言功能?
【问题讨论】:
标签:
python
enums
deprecation-warning
【解决方案1】:
到目前为止,我只通过重载__missing__ 方法为MyEnum("Field2")(但不是MyEnum.Field2)添加了自定义弃用警告,如下所示:
import enum
class MyEnum(enum.Enum):
@classmethod
def _missing_(cls, value: object):
"""Add deprecation warningt to Field2"""
if str(value) == "Field2":
print("Field name `Field2` for `MyEnum` enum is deprecated.")
return cls.Field3
return value
Field1 = "Field1"
# Field2 = "Field2" # should be deprecated
Field3 = "Field3"