AttributeError: объект 'module' не имеет атрибута 'strptime'

Вот мой класс 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'

Как я могу это исправить?

Ответ 1

Если бы я должен был догадаться, вы сделали это:

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")

Ответ 2

Использовать правильный вызов: strptime является классом класса datetime.datetime, это не функция в модуле datetime.

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

Как упоминал Джон Клементс в комментариях, некоторые люди from datetime import datetime, которые связывают имя datetime с классом datetime и делают ваш исходный код работы.

Чтобы определить, к какому случаю вы столкнулись (в будущем), посмотрите на свои операторы импорта

  • import datetime: этот модуль (то, что у вас есть сейчас).
  • from datetime import datetime: что класс.