Pythonでtime()オブジェクトを初期化する方法

このように時間オブジェクトを初期化しようとしています。

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メソッドとcombineメソッドを使用しています。

    earliest = datetime.combine(earliest, t)
    value = datetime.strptime(value, format)
ソリューション

値なしでオブジェクトを作成することができます。

>>> import datetime
>>> datetime.time()
datetime.time(0, 0)

しかし、あなたは、モジュールから class datetime をインポートして、モジュール自体を置き換えています。

>>> from datetime import datetime
>>> datetime.time

で、これは 別の シグネチャを持っています。

>>> datetime.time()
Traceback (most recent call last):
  File "", line 1, in 
TypeError: descriptor 'time' of 'datetime.datetime' object needs an argument
>>> datetime.time(0)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: descriptor 'time' requires a 'datetime.datetime' object but received a 'int'

モジュール全体をインポートするか、含まれるクラスをインポートするか、しかし混在してはいけません。にこだわってください。

import datetime
import time

のように、両方のモジュールが必要な場合は

解説 (4)

timeのコンストラクタは。

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
解説 (0)

それは、datetimeからdatetimeをインポートしていることが原因です。おそらく time のことでしょうが、time とも矛盾する import しています。では、どうでしょう。

import datetime as dt

t = dt.time(0, 0, 0)
解説 (0)