Классу datetime.time
у Python не хватает функциональности +=
с datetime.timedelta
. Я пытаюсь исправить это, создав производный класс Time
. Затем я использую datetime
+=
и получаю datetime.time()
.Добавление + = поддержка 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()' объекты не поддерживают арифметику с 'timedelta', потому что у них нет компонента * даты * для обработки переполнения. Каким будет результат «времени (23, 59, 59) + timedelta (hours = 1)»? –
Рядом с этим 'datetime.time()' объекты являются * неизменяемыми *. –
Я вижу. Таким образом, неизменность - это кирпичная стена, в которой я бегу. Похоже, мне придется реализовать его по-другому. –