AttributeError: modul 'datetime' tidak memiliki atribut 'strptime'

153

Ini Transactionkelas saya :

class Transaction(object):
    def __init__(self, company, num, price, date, is_buy):
        self.company = company
        self.num = num
        self.price = price
        self.date = datetime.strptime(date, "%Y-%m-%d")
        self.is_buy = is_buy

Dan ketika saya mencoba menjalankan datefungsinya:

tr = Transaction('AAPL', 600, '2013-10-25')
print tr.date

Saya mendapatkan kesalahan berikut:

   self.date = datetime.strptime(self.d, "%Y-%m-%d")
 AttributeError: 'module' object has no attribute 'strptime'

Bagaimana saya bisa memperbaikinya?

Michael
sumber
13
from datetime import datetime
Ashwini Chaudhary

Jawaban:

384

Jika saya harus menebak, Anda melakukan ini:

import datetime

di bagian atas kode Anda. Ini artinya Anda harus melakukan ini:

datetime.datetime.strptime(date, "%Y-%m-%d")

untuk mengakses strptime metode. Atau, Anda dapat mengubah pernyataan impor menjadi ini:

from datetime import datetime

dan akseslah sebagaimana adanya.

Orang-orang yang membuat datetimemodul juga memberi nama kelasdatetime mereka :

#module  class    method
datetime.datetime.strptime(date, "%Y-%m-%d")

sumber
12
Mengingatkan kota Colombia di Kolombia: en.wikipedia.org/wiki/Colombia,_Huila
sindri_baldur
16

Gunakan panggilan yang benar: strptimeadalah metode datetime.datetimekelas, itu bukan fungsi dalam datetimemodul.

self.date = datetime.datetime.strptime(self.d, "%Y-%m-%d")

Seperti yang disebutkan oleh Jon Clements dalam komentar, beberapa orang melakukannya from datetime import datetime, yang akan mengikat datetimenama kedatetime kelas, dan membuat kode awal Anda berfungsi.

Untuk mengidentifikasi kasus yang Anda hadapi (di masa depan), lihat pernyataan impor Anda

  • import datetime: itulah modul (itulah yang Anda miliki sekarang).
  • from datetime import datetime: itu kelasnya.
Thomas Orozco
sumber
Sedihnya - jika Anda mengadaptasi basis kode orang lain - itu tidak biasa bagi sebagian orang untuk melakukan from datetime import datetimedan untuk sistem lain itu hanya import datetimeseperti yang diharapkan datetimemenjadi modul ...;)
Jon Clements
1

Saya mendapat masalah yang sama dan itu bukan solusi yang Anda katakan. Jadi saya mengubah "dari datetime import datetime" menjadi "import datetime". Setelah itu dengan bantuan "datetime.datetime" saya bisa mendapatkan seluruh modul dengan benar. Saya kira ini adalah jawaban yang benar untuk pertanyaan itu.

Kursad
sumber