标签:python-datetime monkeypatching datetime python
我正在尝试使我的库之一与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变量,它确实具有此方法.但是,如果通过减去两个datetime.datetime值生成了一个新的timedelta对象,则该方法从结果对象中丢失.
怎么了,我该如何解决?
解决方法:
datetime模块完全用C编写.
这包括从另一个datetime.datetime对象中减去一个对象的函数.该函数称为new_delta(),直接实例化PyDateTime_DeltaType,它是原始的datetime.timedelta类(用C编写).它不会注意到您已经将datetime.timedelta反弹到自己的Python领域类中.
我看不到任何简单的解决方法.
标签:python-datetime,monkeypatching,datetime,python 来源: https://codeday.me/bug/20191207/2087243.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。