我正在尝试使我的一个库与Python 2.6兼容。它使用在2.7中添加的方法datetime.timedelta.total_seconds
,所以为了使它与2.6一起使用,我想将它修改为timedelta
,如下所示:
import datetime
if not hasattr(datetime.timedelta, 'total_seconds'):
class timedelta(datetime.timedelta):
def total_seconds(self):
return self.days * 86400.0 + self.seconds + self.microseconds * 1e-6
datetime.timedelta = timedelta
这确实在某些情况下有效,例如:如果我创建一个timedelta
变量,它确实有这个方法。但是,如果通过减去两个timedelta
值生成新的datetime.datetime
对象,则生成的对象中缺少该方法。
出了什么问题,如何解决这个问题?
答案 0 :(得分:3)
datetime
模块完全用C语言编写。
这包括从一个datetime.datetime
对象中减去另一个new_delta()
对象的函数。该函数 - 称为PyDateTime_DeltaType
- 直接实例化datetime.timedelta
,这是原始的datetime.timedelta
类(用C语言编写)。它不会注意到你在Python-land中将{{1}}反弹到你自己的班级。
我没有看到任何简单的解决方法。