AttributionError: mô đun 'datetime' không có thuộc tính 'strptime'


153

Đây là Transactionlớp học của tôi :

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

Và khi tôi đang cố chạy datechức năng:

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

Tôi nhận được lỗi sau:

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

Lam sao tôi co thể sửa no?


13
from datetime import datetime
Ashwini Chaudhary

Câu trả lời:


384

Nếu tôi phải đoán, bạn đã làm điều này:

import datetime

ở đầu mã của bạn. Điều này có nghĩa là bạn phải làm điều này:

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

để truy cập strptimephương thức. Hoặc, bạn có thể thay đổi câu lệnh nhập thành này:

from datetime import datetime

và truy cập nó như bạn đang có.

Những người thực hiện datetimemô-đun cũng đặt tên lớpdatetime của họ :

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

12
Nhắc nhở về thị trấn Colombia ở Colombia: en.wikipedia.org/wiki/Colombia,_Huila
sindri_baldur

16

Sử dụng lệnh gọi đúng: strptimelà một phân datetime.datetimeloại của lớp, nó không phải là một chức năng trong datetimemô-đun.

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

Như Jon Clements đã đề cập trong các bình luận, một số người làm from datetime import datetime, điều này sẽ liên kết datetimetên với datetimelớp và làm cho mã ban đầu của bạn hoạt động.

Để xác định trường hợp nào bạn gặp phải (trong tương lai), hãy xem báo cáo nhập khẩu của bạn

  • import datetime: đó là mô-đun (đó là những gì bạn có ngay bây giờ).
  • from datetime import datetime: đó là lớp học.

Đáng buồn là - nếu bạn đang thích nghi với cơ sở mã của người khác - nó không phải là hiếm đối với một số để làm from datetime import datetimevà cho các hệ thống khác, nó chỉ là một import datetimevì nó hy vọng datetimetrở thành một mô-đun ...;)
Jon Clements

1

Tôi có cùng một vấn đề và nó không phải là giải pháp mà bạn đã nói. Vì vậy, tôi đã thay đổi "từ datetime nhập datetime" thành "nhập datetime". Sau đó với sự trợ giúp của "datetime.datetime", tôi có thể nhận được toàn bộ các mô-đun một cách chính xác. Tôi đoán đây là câu trả lời chính xác cho câu hỏi đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.