【发布时间】:2021-03-01 17:00:55
【问题描述】:
所以,我有一个可以读取某个文件的库(文件布局不在我的控制范围内)。这些文件具有版本,并且每个版本都添加了更多功能。我有代表某些功能的枚举。现在有了最新的更新,应该将新条目添加到枚举中。但是,当用户尝试在旧版本中使用新功能时,我希望能够给他们一个警告(或例外)。
我认为装饰器可能是要走的路,标记某些值和功能,例如:@from_version('1.40') 或类似的东西。我从来没有创建过自己的装饰器,所以我对它们不太熟悉。
最后一个问题,文件的版本不是全球可用的。 (我不能添加一些静态的东西,因为应该能够一次打开多个文件)。所以我什至不确定装饰器是否是要走的路。
现在我尝试向 Enum 条目添加装饰器,但没有奏效:
import enum
>>> def hello_world(f):
... def decorated(*args, **kwargs):
... print('Hello World!')
... return decorated
...
>>> class A(enum.Enum):
... @hello_world() # Tried with and without ()
... ABC = 1
File "<input>", line 3
ABC = 1
^
SyntaxError: invalid syntax
所以我想知道如何将它添加到枚举中,我还尝试在枚举中添加一个属性,以便我可以添加装饰器,但即使添加属性也不起作用......
TL;DR
如何将自己的装饰器添加到特定的枚举条目?我希望它看起来像这样:
class EnumClass(Enum):
@from_version('1.40')
ENTRY = 0
提前感谢您的帮助!
【问题讨论】:
标签: python-3.x enums python-decorators