2013-04-09 32 views
0

正在嘗試使用Ruby我想在python中使用日期來添加一些語法糖。我如何實現這個方法:(3).days.ago()或(4).days.from_now()?Python:添加數字的方法

+2

你嘗試過什麼? – 2013-04-09 05:22:57

+1

我在https://github.com/gabrielfalcao/sure中發現了類似的功能,但調查代碼需要一些時間。我試圖找到一個更快的方法來做到這一點。 – Nozim 2013-04-09 05:24:44

+2

你想在python中寫ruby? :) – wim 2013-04-09 05:27:29

回答

5

要創建一個語法接近你想要什麼,子類INT添加新方法(內置在INT類型是不可修改的這麼一個子類是用於擴展整數行爲的唯一選擇)。計算使用timedelta日期偏移在datetime module

>>> 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) 
+0

我想用這個函數來包裝這個函數 – Nozim 2013-04-09 05:26:10

+0

問題是在python中實現「(3).days.ago()」,但沒有獲取日期。這只是這個技巧的應用之一。 – Nozim 2013-04-09 05:27:59

+3

+1我會添加到這個答案:「不要。」 – shx2 2013-04-09 05:29:43