AttributeError: el módulo 'datetime' no tiene el atributo 'strptime'

153

Aquí está mi Transactionclase:

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 datefunción:

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

Recibo el siguiente error:

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

¿Cómo puedo arreglar eso?

Miguel
fuente
13
from datetime import datetime
Ashwini Chaudhary

Respuestas:

384

Si tuviera que adivinar, hiciste esto:

import datetime

en la parte superior de tu código. Esto significa que tienes que hacer esto:

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

para acceder al strptimemétodo O bien, puede cambiar la declaración de importación a esto:

from datetime import datetime

y accede a él como eres.

Las personas que hicieron el datetimemódulo también nombraron a su clasedatetime :

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

fuente
12
Recuerdos de la ciudad de Colombia en Colombia: en.wikipedia.org/wiki/Colombia,_Huila
sindri_baldur
16

Use la llamada correcta: strptimees un método de datetime.datetimeclase de la clase, no es una función en el datetimemódulo.

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

Como mencionó Jon Clements en los comentarios, algunas personas lo hacen from datetime import datetime, lo que vincularía el datetimenombre a la datetimeclase y haría que su código inicial funcionara.

Para identificar a qué caso se enfrenta (en el futuro), mire sus declaraciones de importación

  • import datetime: ese es el módulo (eso es lo que tienes ahora).
  • from datetime import datetime: esa es la clase.
Thomas Orozco
fuente
Lamentablemente, si está adaptando la base de código de otra persona, no es raro que algunos lo hagan from datetime import datetimey para otros sistemas es simplemente import datetimecomo se espera datetimeque sea un módulo ...;)
Jon Clements
1

Tengo el mismo problema y no es la solución que le dijiste. Así que cambié "de fecha y hora de importación de fecha y hora" a "importación de fecha y hora". Después de eso con la ayuda de "datetime.datetime" puedo obtener todos los módulos correctamente. Supongo que esta es la respuesta correcta a esa pregunta.

Kursad
fuente