Как инициализировать объект time() в python
Я пытаюсь инициализировать объект времени следующим образом:
t = datetime.time(0,0,0)
но я получаю эту ошибку:
descriptor 'time' requires a 'datetime.datetime' object but received a 'int'
Я импортировал эти вещи
import datetime
from datetime import datetime, date, time
import time
Они кажутся немного избыточными, поэтому мне интересно, является ли это причиной проблемы.
Я также использую метод strptime и метод объединения
earliest = datetime.combine(earliest, t)
value = datetime.strptime(value, format)
Ответы
Ответ 1
Вы можете создать объект без каких-либо значений:
>>> import datetime
>>> datetime.time()
datetime.time(0, 0)
Вы, однако, импортировали класс datetime из модуля, заменив сам модуль:
>>> from datetime import datetime
>>> datetime.time
<method 'time' of 'datetime.datetime' objects>
и имеет другую подпись:
>>> 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'
Импортировать весь модуль или импортировать содержащиеся классы, но не смешивать и не сопоставлять. Придерживайтесь:
import datetime
import time
если вам нужны оба модуля.
Ответ 2
Конструктор времени:
class datetime.time(hour[, minute[, second[, microsecond[, tzinfo]]]])
(из http://docs.python.org/library/datetime.html#time-objects)
Это работает для меня:
In [1]: import datetime
In [2]: t = datetime.time(0, 0, 0)
In [3]: print t
00:00:00
Ответ 3
Это тот факт, что вы import
конфликтующий datetime
от datetime
. Вероятно, вы имели в виду time
, за исключением того, что вы также import
конфликтующего time
. Итак, как насчет:
import datetime as dt
и
t = dt.time(0, 0, 0)