Как добавить предупреждение об устаревании в поля перечисления Python?

#python #enums #deprecation-warning

#питон #перечисления #устаревание-предупреждение

Вопрос:

Учитывая следующее перечисление:

 class MyEnum(enum.Enum):  Field1 = "Field1"  Field2 = "Field2" # should be deprecated for `Field3`  Filed3 = "Field3"  

Я хотел бы добавить предупреждение об устаревании в поле, чтобы при вызове MyEnum.Field2 или MyEnum("Field2") lt;MyEnum.Field3: 'Field3'gt; перечислении возвращался экземпляр, а также предупреждение об устаревании.

Как правильно это сделать? Есть ли функция языка python, которая может это сделать?

Ответ №1:

До сих пор мне удавалось добавить пользовательское предупреждение об устаревании только для случая MyEnum("Field2") (но не для MyEnum.Field2 ), перегрузив __missing__ метод следующим образом:

 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"