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
: что класс.