Python 添加+;=支持datetime.time
Python的Python 添加+;=支持datetime.time,python,python-2.7,datetime,time,Python,Python 2.7,Datetime,Time,Python的datetime.time类缺少带有datetime.timedelta的+=功能。我试图通过创建派生类Time来解决这个问题。然后我使用datetime+=并获得datetime.time() 但是,我不知道如何传递父类值。我试图实现copy方法,如下所示,但出现错误: AttributeError: attribute 'hour' of 'datetime.time' objects is not writable 我目前的执行情况: from datetime impor
datetime.time
类缺少带有datetime.timedelta
的+=
功能。我试图通过创建派生类Time
来解决这个问题。然后我使用datetime
+=
并获得datetime.time()
但是,我不知道如何传递父类值。我试图实现copy
方法,如下所示,但出现错误:
AttributeError: attribute 'hour' of 'datetime.time' objects is not writable
我目前的执行情况:
from datetime import datetime, timedelta, time
class Time(time):
def copy(self,other):
self.hour = other.hour
self.minute = other.minute
self.second = other.second
self.microsecond = other.microsecond
def __add__(self,other):
if isinstance(other,timedelta):
dt = toDatetime(self)
dt += other
t = Time()
t.copy(dt.time())
return t
如何复制父类的值?另外,有没有更好的方法可以让我获得对相当于
datetime.time的+=
的支持,而我只是把这一切都搞错了?要创建副本,请将时间组件传递给构造函数:
datetime.time()
对象在其他方面是不可变的;您可以使用它们来创建一个新实例,替换特定的组件,但由于您正在构造一个新的子类实例,只需传入组件就更容易了。datetime.time()
对象不支持带有timedelta
的算术,因为它们没有处理溢出的日期组件。例如,time(23,59,59)+timedelta(hours=1)
的结果会是什么?其次,datetime.time()
对象是不可变的。我明白了。所以不变性就是我在这里遇到的砖墙。看起来我必须以另一种方式实现它。为什么不将组件(小时、分钟、秒、微秒)传递给构造函数呢<代码>时间(dt.小时,dt.分钟,dt.秒,dt.微秒)
好主意!这很有效。回答一下,我就接受。
t = Time(dt.hour, dt.minute, dt.second, dt.microsecond)