2016-11-23 5 views
0

Из исходного кода для dateutil's rrule я заметил, что класс rrule имеет свой собственный метод __str__. Следовательно, можно ожидать, что если я создам экземпляр my_rrulerrule и вызовет str(my_rrule), он будет ссылаться на этот метод. Однако, это, кажется, не так:Как назвать метод __str__ dateutil.rrule.rrule

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>' 

Я бы вместо этого хотел бы увидеть что-то вроде того, что описано в исходном коде, а именно «строку, которая будет генерировать этот RRULE, если передается rrulestr». Как я могу вызвать метод класса __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 - это не последняя версия. Я получаю 2.6, когда устанавливаю 'python-dateutil' с' pip'. Документы точно соответствуют версии, которую я установил. – Blckknght