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'

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

2 88

2 ответа:

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

import datetime

в верхней части вашего кода. Это означает, что вы должны сделать это:

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

к strptime метод. Или вы можете изменить инструкцию import следующим образом:

from datetime import datetime

и к нему как вы.

люди, которые сделали datetime модуль также назвал их класс datetime:

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

Используйте правильный призыв: strptime является classmethod из 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: это класс.