2013-10-20 34 views
69

Ecco la mia Transaction classe:AttributeError: oggetto 'modulo' non ha alcun attributo 'strptime'

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 

E quando sto cercando di eseguire la funzione date:

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

Sono ottenendo il seguente errore:

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

Come posso risolvere il problema?

+7

'da datetime import DateTime' –

risposta

180

Se dovessi indovinare, hai fatto questo:

import datetime 

nella parte superiore del vostro codice. Questo significa che si deve fare questo:

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

per accedere al metodo strptime. In alternativa, puoi modificare l'istruzione import a questo:

from datetime import datetime 

e accedervi come sei.

Le persone che hanno fatto la datetime module chiamato anche il loro class datetime:

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

Utilizzare la chiamata corretta: strptime è un metodo di classe della classe datetime.datetime, non è una funzione nel modulo datetime.

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

Come accennato da Jon Clements nei commenti, alcune persone fanno from datetime import datetime, che avrebbe legato il nome datetime alla classe datetime, e rendere il vostro lavoro codice iniziale.

Per identificare qual caso si sta affrontando (in futuro), guarda le sue dichiarazioni di importazione

  • import datetime: questo è il modulo (che è quello che hai in questo momento).
  • from datetime import datetime: questa è la classe.
+0

Purtroppo - se si sta adattando di qualcun altro codice di base - non è raro per un po 'da fare' da datetime importare datetime' e per altri sistemi è solo un 'import datetime' in quanto si aspetta che' datetime' sia un modulo ...;) –

+0

@JonClements Effettivamente! –

Problemi correlati