为datetime.time添加+ =支持

时间:2014-09-13 14:24:43

标签: 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 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}}支持,我只是认为这一切都错了?

1 个答案:

答案 0 :(得分:1)

要创建副本,请将时间组件传递给构造函数

t = Time(dt.hour, dt.minute, dt.second, dt.microsecond)

datetime.time()个对象是不可变的;您可以使用他们的time.replace() method创建一个替换了特定组件的新实例,但由于您正在构建一个新的子类实例 ,所以只需传入组件就可以了。

相关问题