'datetime.datetime' tür nesnesi 'datetime' özniteliğine sahip değil


127

Aşağıdaki hatayı aldım:

'datetime.datetime' tür nesnesi 'datetime' özniteliğine sahip değil

Aşağıdaki satırda:

date = datetime.datetime(int(year), int(month), 1)

Hatanın nedenini bilen var mı?

from datetime import datetimeEğer yardımcı olursa datetime'ı içe aktardım

Teşekkürler

Yanıtlar:


225

Datetime, tarihlerin, saatlerin ve tarih saatlerinin (tümü veri türleridir) işlenmesine izin veren bir modüldür. Bu datetime, hem üst düzey bir modül olduğu hem de bu modül içinde bir tür olduğu anlamına gelir . Bu kafa karıştırıyor.

Hatanız muhtemelen modülün kafa karıştırıcı adlandırılmasına ve kullandığınız modülün zaten içe aktarılmış olmasından kaynaklanmaktadır.

>>> import datetime
>>> datetime
<module 'datetime' from '/usr/lib/python2.6/lib-dynload/datetime.so'>
>>> datetime.datetime(2001,5,1)
datetime.datetime(2001, 5, 1, 0, 0)

Ancak, datetime.datetime'ı içe aktarırsanız:

>>> from datetime import datetime
>>> datetime
<type 'datetime.datetime'>
>>> datetime.datetime(2001,5,1) # You shouldn't expect this to work 
                                # as you imported the type, not the module
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: type object 'datetime.datetime' has no attribute 'datetime'
>>> datetime(2001,5,1)
datetime.datetime(2001, 5, 1, 0, 0)

Sana şüpheli veya kullandığınız modüllerin biri böyle ithal etti: from datetime import datetime.


3
@jozzas harika cevap. Çözümünüzle çözülen timedelta ile ilgili bir sorun yaşadım. Txs.
Luis Miguel

1
@Jean bu datetime'ın kendi modül adını python'un değil, sınıf adlarından biriyle gölgelemesinin hatasıdır.
Robino

85

Python 3.3 için

from datetime import datetime, timedelta
futuredate = datetime.now() + timedelta(days=10)

12
+1. Ben bildiğim kadarıyla, çünkü bu doğru cevap olması gerektiğini düşünüyorum import datetimeBir çözüm yolu yanayım yüzden, her zaman sorunlara neden olan kullanımlarıfrom datetime import datetime
jeff

14

Kullanmalısın

date = datetime(int(year), int(month), 1)

Veya değiştir

from datetime import datetime

için

import datetime

11

Modülü gerçekten kendi takma adına aktarmalısınız .

import datetime as dt
my_datetime = dt.datetime(year, month, day)

Yukarıdakilerin diğer çözümlere göre aşağıdaki faydaları vardır:

  • Değişkeni çağırmak my_datetimeyerine , datetime modülünde ( ) datezaten bir tane olduğundan karışıklığı azaltır .datedatetime.date
  • Modül ve sınıf (her ikisi de denir datetime) birbirini gölgelemez.

1

Kullandıysanız:

from datetime import datetime

Ardından kodu şu şekilde yazın:

date = datetime(int(year), int(month), 1)

Ama kullandıysanız:

import datetime

o zaman sadece sen yazabilirsin:

date = datetime.datetime(int(2005), int(5), 1)

1

Bunu çok daha kolay buldum

from dateutil import relativedelta
relativedelta.relativedelta(end_time,start_time).seconds

1

Ben zaten sadece kullanarak modülü ithal var belki aynı yanılgıya çalıştırmak import datetimeböylece değiştirmek form datetime import datetimesadece import datetime. Geri değiştirdikten sonra benim için çalıştı.


-2
from datetime import datetime
import time
from calendar import timegm
d = datetime.utcnow()
d = d.strftime("%Y-%m-%dT%H:%M:%S.%fZ")
utc_time = time.strptime(d,"%Y-%m-%dT%H:%M:%S.%fZ")
epoch_time = timegm(utc_time)

6
Yalnızca kod yanıtlarından kaçınmaya çalışın. Sen olabilir düzenleme kodunuzu desteklemek için bazı açıklamalar ve bağlantılar eklemek için yayınınızı.
Tomerikoo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.