Hier is mijn klasse 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
En als ik de functie date
probeer uit te voeren:
tr = Transaction('AAPL', 600, '2013-10-25')
print tr.date
Ik krijg de volgende foutmelding:
self.date = datetime.strptime(self.d, "%Y-%m-%d")
AttributeError: 'module' object has no attribute 'strptime'
Hoe kan ik dat oplossen?
Antwoord 1, autoriteit 100%
Als ik moest raden, deed je dit:
import datetime
bovenaan je code. Dit betekent dat je dit moet doen:
datetime.datetime.strptime(date, "%Y-%m-%d")
om toegang te krijgen tot de strptime
methode. Of u kunt het importstatement in dit veranderen:
from datetime import datetime
en open het zoals u bent.
De mensen die de datetime
-modulehebben gemaakt hebben ook hun klasse datetime
genoemd:
#module class method
datetime.datetime.strptime(date, "%Y-%m-%d")
Antwoord 2, autoriteit 4%
Gebruik de juiste aanroep: strptime
is een klassenmethode van de klasse datetime.datetime
, het is geen functie in de module datetime
.
self.date = datetime.datetime.strptime(self.d, "%Y-%m-%d")
Zoals vermeld door Jon Clements in de opmerkingen, doen sommige mensen from datetime import datetime
, wat de naam datetime
zou binden aan de datetime
class, en laat je eerste code werken.
Om te bepalen met welk geval u (in de toekomst) wordt geconfronteerd, bekijkt u uw importverklaringen
import datetime
: dat is de module (die heb je nu).from datetime import datetime
: dat is de klas.
Antwoord 3
Ik heb hetzelfde probleem en het is niet de oplossing die je hebt verteld. Dus ik heb de “from datetime import datetime” gewijzigd in “import datetime”. Daarna met
met de hulp van “datetime.datetime” kan ik de hele modules correct krijgen. Ik denk dat dit het juiste antwoord op die vraag is.