Aquí está mi clase de 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
Y cuando estoy tratando de ejecutar la función de date
:
tr = Transaction('AAPL', 600, '2013-10-25') print tr.date
Estoy recibiendo el siguiente error:
self.date = datetime.strptime(self.d, "%Y-%m-%d") AttributeError: 'module' object has no attribute 'strptime'
¿Cómo puedo arreglar eso?
Si tuviera que adivinar, hiciste esto:
import datetime
en la parte superior de su código. Esto significa que tienes que hacer esto:
datetime.datetime.strptime(date, "%Y-%m-%d")
para acceder al método strptime
. O bien, podría cambiar la statement de importación a esto:
from datetime import datetime
Y accede a él como eres.
Las personas que hicieron el módulo datetime
también llamaron a su clase datetime
:
#module class method datetime.datetime.strptime(date, "%Y-%m-%d")
Use la llamada correcta: strptime
es un método de clase de la clase datetime.datetime
, no es una función en el módulo de datetime
.
self.date = datetime.datetime.strptime(self.d, "%Y-%m-%d")
Como lo mencionó Jon Clements en los comentarios, algunas personas lo hacen from datetime import datetime
, lo que vincularía el nombre de datetime
a la clase de datetime
y hará que su código inicial funcione.
Para identificar qué caso está enfrentando (en el futuro), mire sus declaraciones de importación
import datetime
: ese es el módulo (eso es lo que tiene ahora). from datetime import datetime
: esa es la clase.