0

受到 Ruby 的诱惑,我想在 python 中处理日期时添加一些语法糖。如何实现此方法:(3).days.ago() 或 (4).days.from_now()?

4

1 回答 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 回答