Python 3.x Python3 |向枚举条目添加装饰器
所以,我有一个可以读取特定文件的库(文件布局不受我的控制)。这些文件有不同的版本,每个版本都添加了更多的功能。我有代表一些特征的枚举。现在有了最新的更新,新条目应该添加到枚举中。但是,当用户尝试在旧版本中使用新功能时,我希望能够给他们一个警告(或例外) 我认为装饰程序可能是一种方式,标记某些值和函数,例如:Python 3.x Python3 |向枚举条目添加装饰器,python-3.x,enums,python-decorators,Python 3.x,Enums,Python Decorators,所以,我有一个可以读取特定文件的库(文件布局不受我的控制)。这些文件有不同的版本,每个版本都添加了更多的功能。我有代表一些特征的枚举。现在有了最新的更新,新条目应该添加到枚举中。但是,当用户尝试在旧版本中使用新功能时,我希望能够给他们一个警告(或例外) 我认为装饰程序可能是一种方式,标记某些值和函数,例如:@from_version('1.40')或类似的东西。我从来没有创建过自己的装饰师,所以我对他们不太熟悉 最后一个问题是,文件的版本不是全局可用的。(我不能添加静态文件,因为应该可以同时打开
@from_version('1.40')
或类似的东西。我从来没有创建过自己的装饰师,所以我对他们不太熟悉
最后一个问题是,文件的版本不是全局可用的。(我不能添加静态文件,因为应该可以同时打开多个文件)。所以我甚至不确定装饰师是否是未来的方向
现在我尝试向枚举项添加装饰器,但没有成功:
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
提前感谢您的帮助 您想要的是一个单独的答案,但为了解释您遇到的问题--装饰器只能用于函数和类(
def
和class
),不能用于属性(如ABC=1
)
class EnumClass(Enum):
@from_version('1.40')
ENTRY = 0