Python的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
的{{1}}支持,我只是认为这一切都错了?
答案 0 :(得分:1)
要创建副本,请将时间组件传递给构造函数:
t = Time(dt.hour, dt.minute, dt.second, dt.microsecond)
datetime.time()
个对象是不可变的;您可以使用他们的time.replace()
method创建一个替换了特定组件的新实例,但由于您正在构建一个新的子类实例 ,所以只需传入组件就可以了。