受到 Ruby 的诱惑,我想在 python 中处理日期时添加一些语法糖。如何实现此方法:(3).days.ago() 或 (4).days.from_now()?
问问题
170 次
1 回答
5
要创建接近您想要的语法,子类int以添加新方法(内置int类型是不可修改的,因此子类是扩展整数行为的唯一选择)。使用datetime 模块中的timedelta计算日期偏移量:
>>> from datetime import date, timedelta
>>> class Int(int):
def days_ago(self):
return date.today() - timedelta(days=self)
def days_from_now(self):
return date.today() + timedelta(days=self)
>>> Int(3).days_ago()
datetime.date(2013, 4, 5)
>>> Int(4).days_from_now()
datetime.date(2013, 4, 12)
于 2013-04-09T05:23:52.823 回答