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 № 1Um 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.