Python3 |将装饰器添加到枚举条目
Python3 | Add decorator to enum entry
所以,我有一个可以读取特定文件的库(文件布局不受我控制)。这些文件有多个版本,每个版本都会添加更多功能。我有代表某些功能的枚举。现在有了最新的更新,新条目应该添加到枚举中。但是,我希望能够在用户尝试在旧版本中使用新功能时向他们发出警告(或异常)。
我认为装饰器可能是可行的方法,标记某些值和函数,例如:@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
在此先感谢您的帮助!
你想要的是在一个单独的答案中,但要解释你遇到的问题——装饰器只能用于函数和 类(def
和 class
)和不能与属性一起使用(如 ABC = 1
.
所以,我有一个可以读取特定文件的库(文件布局不受我控制)。这些文件有多个版本,每个版本都会添加更多功能。我有代表某些功能的枚举。现在有了最新的更新,新条目应该添加到枚举中。但是,我希望能够在用户尝试在旧版本中使用新功能时向他们发出警告(或异常)。
我认为装饰器可能是可行的方法,标记某些值和函数,例如:@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
在此先感谢您的帮助!
你想要的是在一个单独的答案中,但要解释你遇到的问题——装饰器只能用于函数和 类(def
和 class
)和不能与属性一起使用(如 ABC = 1
.