AttributeError: โมดูล 'datetime' ไม่มีแอตทริบิวต์ 'strptime'


154

นี่คือTransactionชั้นเรียนของฉัน:

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

และเมื่อฉันพยายามเรียกใช้dateฟังก์ชัน:

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

ฉันได้รับข้อผิดพลาดต่อไปนี้:

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

ฉันจะแก้ไขได้อย่างไร


13
from datetime import datetime
Ashwini Chaudhary

คำตอบ:


384

ถ้าฉันต้องเดาคุณทำสิ่งนี้:

import datetime

ที่ด้านบนของรหัสของคุณ หมายความว่าคุณต้องทำสิ่งนี้:

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

เพื่อเข้าถึงstrptimeวิธีการ หรือคุณสามารถเปลี่ยนคำสั่งการนำเข้าเป็นสิ่งนี้:

from datetime import datetime

และเข้าถึงได้ตามที่คุณเป็น

คนที่สร้างdatetimeโมดูลก็ตั้งชื่อชั้นเรียนdatetimeของพวกเขาด้วย:

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

12
เตือนความทรงจำของเมืองโคลัมเบียในโคลัมเบีย: en.wikipedia.org/wiki/Colombia,_Huila
sindri_baldur

16

ใช้การโทรที่ถูกต้อง: strptimeเป็นdatetime.datetimeคลาสของวิธีการเรียนไม่ใช่ฟังก์ชั่นในdatetimeโมดูล

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

ดังที่ Jon Clements กล่าวไว้ในความคิดเห็นบางคนทำfrom datetime import datetimeซึ่งจะผูกdatetimeชื่อให้กับdatetimeชั้นเรียนและทำให้รหัสเริ่มต้นของคุณทำงานได้

ในการระบุกรณีที่คุณกำลังเผชิญอยู่ (ในอนาคต) ให้ดูที่คำสั่งการนำเข้าของคุณ

  • import datetime: นั่นคือโมดูล (นั่นคือสิ่งที่คุณมีตอนนี้)
  • from datetime import datetime: นั่นคือชั้นเรียน

น่าเศร้า - ถ้าคุณปรับฐานรหัสของคนอื่นไม่ใช่เรื่องผิดปกติที่บางคนต้องทำfrom datetime import datetimeและสำหรับระบบอื่น ๆ มันเป็นเพียงimport datetimeอย่างที่มันคาดหวังว่าdatetimeจะเป็นโมดูล ... ;)
Jon Clements

1

ฉันมีปัญหาเดียวกันและไม่ใช่วิธีการแก้ปัญหาที่คุณบอก ดังนั้นฉันจึงเปลี่ยน "จากวันที่นำเข้าวันที่และเวลา" เป็น "นำเข้าวันที่ออก" หลังจากนั้นด้วยความช่วยเหลือของ "datetime.datetime" ฉันจะได้รับโมดูลทั้งหมดอย่างถูกต้อง ฉันเดาว่านี่เป็นคำตอบที่ถูกต้องสำหรับคำถามนั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.