Ruby に誘惑されて、Python で日付を操作する際に構文糖衣を追加したいと考えています。このメソッドを実装するにはどうすればよいですか: (3).days.ago() または (4).days.from_now()?
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 に答える