有没有一种方法可以在Python中创建一个Enum
,每次访问Enum
属性时计算值?具体来说,我尝试创建一个Enum
类,它存储像TODAY
、TOMORROW
等值。对于一个运行了很多天的Web应用程序(在Django中),我希望每次访问时都重新计算该值,以防日期发生变化。因此,假设应用程序在3月1日启动,如果应用程序在3月3日检查TODAY
,它将返回3月3日,而不是3月1日,这是它初始化的目的。
from enum import Enum
import datetime
class MyEnum(Enum):
TODAY = datetime.datetime.now()
TOMORROW = datetime.datetime.now() + datetime.timedelta(days=1)
1条答案
按热度按时间gijlo24d1#
你可以通过编写一个描述符来做到这一点,比如:
但在这种情况下,这甚至会使枚举的大多数功能无效,因此这可能不是一个好主意。
也许更好的方法是在
Enum
上定义一个函数,比如:然后,您可以通过以下方式获取时间戳:
这看起来像是获取枚举选择的时间戳的最小工作量。