从特提提尔规则的源代码中,我注意到类rrule有自己定义的__str__方法。因此,如果我创建一个实例my_rrule of rrule并调用str(my_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>'相反,我希望看到类似于源代码中描述的内容,即“如果传递给rrulestr将生成此RRULE的字符串”。如何调用“特定于类”的__str__方法而不是“默认”方法?
发布于 2016-11-23 18:29:18
最新答案
正如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'旧(不正确)答案
看来,模块/dateutil/rrule.html#rrule上的源代码来自较早版本的rrule。我下载了dateutil2.0的源代码,并在rrule.py中搜索__str__,但没有找到结果(见下文)。

这里是我所指的文档中__str__的定义:

https://stackoverflow.com/questions/40771014
复制相似问题