2016-11-23 74 views
0

從源代碼dateutil's rrule,我注意到類rrule有自己的__str__方法定義。因此,如果我創建一個my_rrule的實例rrule並且調用str(my_rrule),那麼它會預期會調用該方法。然而,這似乎並沒有這樣的情況:如何調用dateutil.rrule.rrule的__str__方法

In [1]: from dateutil.rrule import * 

In [2]: my_rrule = rrule(DAILY, count=2) 

In [3]: str(my_rrule) 
Out[3]: '<dateutil.rrule.rrule object at 0x7f97afed29d0>' 

我反而想看到的東西像什麼是源代碼,即「如果傳遞給rrulestr會產生這種RRULE一個字符串」描述。我怎樣才能調用'特定類'__str__方法而不是'默認'方法?

+0

你或許意味着'幫助(dateutil.rrule.rrule)'? – elethan

+1

我無法重現此問題。你使用的是哪個版本的'dateutil'?如果您不確定,請嘗試打印'dateutil .__ version__'。 – Blckknght

+0

我正在使用版本2.4.2。下面你的評論,我想升級到2.6,但如果我從命令行運行命令'sudo apt-get install python-dateutil',我會得到「python-dateutil已經是最新版本(2.4.2 -1)」。你是否必須手動安裝2.6版本? –

回答

1

更新答案

正如指出的Blckknight,我沒有使用最新的dateutil,即2.6.0版本在寫作的時間之前。隨着最新版本字符串包含重建rrule所需的信息:

In [1]: from dateutil.rrule import * 

In [2]: my_rrule = rrule(DAILY, count=2) 

In [3]: str(my_rrule) 
Out[3]: 'DTSTART:20161124T123554\nFREQ=DAILY;COUNT=2' 

In [4]: import dateutil 

In [5]: dateutil.__version__ 
Out[5]: '2.6.0' 

老(不正確)回答

這樣看來,在http://dateutil.readthedocs.io/en/stable/_modules/dateutil/rrule.html#rrule源代碼是從舊版本的rrule。我下載了dateutil 2.0的源代碼,並在rrule.py中搜索了__str__,但沒有找到結果(請參閱下文)。

enter image description here

P.S.這裏是我指的是在文檔__str__定義:

enter image description here

+1

'dateutil' 2.0不是最新版本。當我用'pip'安裝'python-dateutil'時,我得到了2.6。文檔與我安裝的版本完全匹配。 – Blckknght