【问题标题】: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.Field2MyEnum("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"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 2017-08-22
      • 1970-01-01
      • 2017-11-16
      相关资源
      最近更新 更多