/ / Hinzufügen von + = Unterstützung für datetime.time - Python, Python-2.7, Datum, Uhrzeit

Hinzufügen von + = Unterstützung zu datetime.time - Python, Python-2.7, Datum, Uhrzeit

Pythons datetime.time Klasse fehlt die Funktionalität von += mit datetime.timedelta. Ich versuche, dies durch Erstellen einer abgeleiteten Klasse zu beheben Time. Ich benutze dann die datetime += und hol die datetime.time().

Ich kann jedoch nicht herausfinden, wie ich dann die übergeordneten Klassenwerte übertragen kann. Ich habe versucht, a zu implementieren copy Methode, wie unten gezeigt, aber ich erhalte den Fehler:

AttributeError: attribute "hour" of "datetime.time" objects is not writable

Meine aktuelle Implementierung:

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

Wie kann ich die Werte der Elternklasse kopieren? Gibt es einen besseren Weg für mich? += Unterstützung für das Äquivalent von datetime.time und ich gehe einfach nur falsch damit um?

Antworten:

1 für die Antwort № 1

Um eine Kopie zu erstellen, übergeben Sie die Zeitkomponenten zum Konstruktor:

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

datetime.time() Objekte sind ansonsten unveränderlich; Sie könnten ihre verwenden time.replace() Methode Erstellen einer neuen Instanz, bei der bestimmte Komponenten ersetzt wurden, aber da Sie eine neue Unterklasseninstanz erstellen sowiesoEinfach die Komponenten zu übergeben, ist einfacher.