Sto provando ad estendere la classe datetime.datetime
di Python con un paio di metodi aggiuntivi. Così, per esempio sto facendo:Come posso estendere il datetime.datetime di Python con i miei metodi?
import datetime
class DateTime(datetime.datetime):
def millisecond(self):
return self.microsecond/1000
ma poi se lo faccio
>>> d = DateTime(2010, 07, 11, microsecond=3000)
>>> print d.millisecond()
3
>>> delta = datetime.timedelta(hours=4)
>>> newd = d + delta
>>> print newd.millisecond()
AttributeError: 'datetime.datetime' object has no attribute 'millisecond'
Questo è ovviamente perché facendo d + delta
chiama il metodo datetime.datetime.__add__()
che restituisce un oggetto datetime.datetime
.
Esiste un modo per convertire questo oggetto datetime.datetime
in un oggetto DateTime
? O dovrei reimplementare tutti gli operatori nella sottoclasse DateTime
per restituire il tipo corretto?
TypeError: impossibile impostare gli attributi di tipo built-in/extension 'datetime.datetime ' – cmcginty
Uno dei migliori usi è quello di implementare bit di funzionalità che normalmente non appariranno fino a una versione futura, soprattutto se sono abbastanza semplici e utili. – SilverbackNet