2015-05-07 62 views
0

所以,很長一段時間以來,我一直在使用類似的代碼在Python以下的版本跟蹤:的Python:datetime.date「預期日期時間,得到了詮釋」

... 
import datetime 
... 

""" 
Version tracking 
""" 
__version__ = 4.0 
__dateV__ = datetime.date(2015, 5, 7) 
... 

現在,出於藍,我得到一個錯誤,說「TypeError:描述符'日期'需要'datetime.datetime'對象,但收到'int'」

這從來沒有發生過,而datetime模塊的文檔說「日期「對象應該用年,月,日參數進行初始化,這些參數都是INTEGERS。

我確認我正在使用Python版本2.7。

是否有其他人看到此錯誤?這實際上是我的代碼的頂部(就在所有的進口之後)。請幫助。

+5

請發佈一個完整的,自包含的示例來演示此問題。我懷疑你實際上有'從datetime導入日期時間'。 – BrenBarn

+0

我同意BrenBarn我可以重現錯誤,如果我'導入日期時間爲dt dt.datetime.date(2014年1月1日)' – EdChum

回答

0

經仔細檢查,我發現,錯誤的根源竟是我的import語句之一。

我的一個模塊中它有一個錯誤,但是由於某種原因沒有被捕獲的錯誤直到行DATEV = datetime.date(5,7,2015)

日期時間模塊被正確導入,但是這個追蹤令我發瘋了。評論出錯模塊的進口擺脫了錯誤。

+0

你有沒有使用通配符('*')導入?這可以解釋爲什麼從其他模塊導入可能會中斷'datetime.date'調用。 – jfs

+0

是的,這確實是我一直在做的事情。我已經確保只從所述模塊中導入我需要的特定類,並且問題已消失。 – jdrobers

2

正如上述評論人士建議,你可能已經與

from datetime import datetime 

也就是說,名稱datetime將參照類datetime代表日期和時間在一起(從datetime模塊,進口其進口,令人討厭的是,它有相同的名字)。

然後,date是用於檢索datetime對象的日期部分的方法:

In [4]: my_date = datetime(2015,5,7,20,02,00) 
In [5]: my_date.date() 
In [6]: datetime.date(2015, 5, 7) 

它不帶任何參數(見the source)除了self,所以如果你有一個稱之爲以上整數參數,它抱怨:

In [7]: datetime.date(999) 
--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-5-55d65eb13663> in <module>() 
----> 1 datetime.date(999) 

TypeError: descriptor 'date' requires a 'datetime.datetime' object but received a 'int' 

在此背景下,datetime.datedatetime對象的方法,不知道該怎麼做999。以下是等價的:

In [8]: datetime.date(my_date) 
Out[8]: datetime.date(2015, 5, 7) 

In [9]: my_date.date() 
Out[9]: datetime.date(2015, 5, 7) 

如果導入datetime模塊,你可以做你想做的,因爲date也是一個類的名稱(表示日期,而不小時,分鐘等)

In [1]: import datetime 
In [2]: datetime.date(2015, 5, 7) # OK, returns a date object 
0

我認爲你正在使用`從日期時間導入*:

>>> from datetime import * 
>>> date = datetime.date(2015, 5, 7) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: descriptor 'date' requires a 'datetime.datetime' object but received a 'int' 
這個模塊中

使用from datetime import date則:

>>> date = date(2015, 5, 7) 
+0

'從datetime導入日期'不*引入'datetime'名稱,因此您應該在這裏得到NameError。 – jfs

+0

我沒有找到你 – fahad

+0

開始'python',把你的代碼從答案中,看看會發生什麼 – jfs

相關問題