Oto moja Transaction
klasa:
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
A kiedy próbuję uruchomić date
funkcję:
tr = Transaction('AAPL', 600, '2013-10-25')
print tr.date
Otrzymuję następujący błąd:
self.date = datetime.strptime(self.d, "%Y-%m-%d")
AttributeError: 'module' object has no attribute 'strptime'
Jak mogę to naprawić?
python
class
python-2.7
Michael
źródło
źródło
from datetime import datetime
Odpowiedzi:
Gdybym miał zgadywać, zrobiłeś to:
u góry twojego kodu. Oznacza to, że musisz to zrobić:
aby uzyskać dostęp do
strptime
metody. Możesz też zmienić instrukcję importu na następującą:i uzyskaj do niego dostęp takim, jakim jesteś.
Osoby, które stworzyły
datetime
moduł, również nazwały swoją klasędatetime
:źródło
Użyj prawidłowego wywołania:
strptime
jest metodądatetime.datetime
klasową klasy, nie jest funkcją wdatetime
module.Jak wspomniał Jon Clements w komentarzach, niektórzy tak robią
from datetime import datetime
, co wiązałobydatetime
nazwę zdatetime
klasą i sprawił, że początkowy kod działał.Aby określić, z jakim przypadkiem masz do czynienia (w przyszłości), spójrz na swoje instrukcje importu
import datetime
: to jest moduł (to właśnie masz teraz).from datetime import datetime
: to klasa.źródło
from datetime import datetime
a dla innych systemów jest to po prostu takiimport datetime
, jakiego oczekujedatetime
się od modułu ...;)Mam ten sam problem i nie jest to rozwiązanie, o którym mówiłeś. Więc zmieniłem „z importu daty i godziny” na „import daty i godziny”. Po tym przy pomocy "datetime.datetime" mogę poprawnie pobrać całe moduły. Myślę, że to jest prawidłowa odpowiedź na to pytanie.
źródło