J'essaie d'étendre la classe datetime.datetime
de Python avec quelques méthodes supplémentaires. Ainsi, par exemple, je fais:Comment puis-je étendre datetime.datetime de Python avec mes propres méthodes?
import datetime
class DateTime(datetime.datetime):
def millisecond(self):
return self.microsecond/1000
mais si je
>>> 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'
Ceci est évidemment parce que cela d + delta
appelle la méthode datetime.datetime.__add__()
qui retourne un objet datetime.datetime
.
Est-il possible de convertir cet objet datetime.datetime
en objet DateTime
? Ou devrais-je réimplémenter tous les opérateurs dans ma sous-classe DateTime
pour renvoyer le type correct?
TypeError: impossible de définir les attributs de type datetime/type d'extension intégré.datetime ' – cmcginty
L'une des meilleures utilisations consiste à implémenter des éléments de fonctionnalité qui normalement n'apparaîtront pas avant une future version, surtout s'ils sont assez simples et utiles. – SilverbackNet