J'essaie d'initialiser un objet temps comme celui-ci:
t = datetime.time(0,0,0)
mais je reçois cette erreur:
descriptor 'time' requires a 'datetime.datetime' object but received a 'int'
J'ai ces choses importées
import datetime
from datetime import datetime, date, time
import time
Ils semblent un peu redondants donc je me demande si c'est ce qui cause le problème
J'utilise également la méthode strptime et la méthode combine
earliest = datetime.combine(earliest, t)
value = datetime.strptime(value, format)
Vous pouvez créer l'objet sans aucune valeur:
>>> import datetime
>>> datetime.time()
datetime.time(0, 0)
Cependant, vous avez importé le class datetime du module, en remplaçant le module lui-même:
>>> from datetime import datetime
>>> datetime.time
<method 'time' of 'datetime.datetime' objects>
et qui a une signature différente:
>>> datetime.time()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: descriptor 'time' of 'datetime.datetime' object needs an argument
>>> datetime.time(0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: descriptor 'time' requires a 'datetime.datetime' object but received a 'int'
Soit importez le module entier, soit importez les classes contenues, mais ne mélangez pas et ne correspondez pas. S'en tenir à:
import datetime
import time
si vous avez besoin des deux modules.
Le constructeur du temps est:
class datetime.time(hour[, minute[, second[, microsecond[, tzinfo]]]])
(depuis http://docs.python.org/library/datetime.html#time-objects )
Cela fonctionne pour moi:
In [1]: import datetime
In [2]: t = datetime.time(0, 0, 0)
In [3]: print t
00:00:00
C'est le fait que vous import
un datetime
conflictuel de datetime
. Vous vouliez probablement dire time
, sauf que vous êtes aussiimport
ing un time
en conflit. Alors que diriez-vous:
import datetime as dt
et
t = dt.time(0, 0, 0)