datetime
использует datetime.datetime(...)
в представлении:
>>> import datetime
>>> datetime.datetime.now()
datetime.datetime(2018, 5, 27, 16, 46, 59, 491342)
Это имя модуля , за которым следует имя класса, которое является атрибутом модуля:
>>> datetime
<module 'datetime' from '/.../lib/python3.6/datetime.py'>
>>> datetime.datetime
<class 'datetime.datetime'>
Имя datetime
в вашем примере ссылается не на модуль, а на класс внутри модуля:
>>> from datetime import datetime # the form used in your question
>>> datetime
<class 'datetime.datetime'>
Вместо этого используйте import datetime
, затемиспользование today = datetime.datetime.now()
.
repr()
вызывает метод object.__repr__()
, который не передает никакой информации о том, как ваш код ссылается на класс;поэтому экземпляр не может отрегулировать, какую строку он генерирует.Даже если бы была доступна дополнительная информация, вы бы не захотели генерировать разные строки в любом случае ;Вы действительно хотите выяснить, что такое fluzborx.datetime()
, когда кто-то в шутку где-то использовал import datetime as fluzborx
?
Обратите внимание, что цель repr()
состоит в помощи в отладке , а не в предоставлении полногоподдержка сериализации типов данных.Если вы хотите сериализовать datetime
экземпляров, используйте правильный формат сериализации, такой как pickle
, или напишите свои собственные преобразования datetime -> string and string -> datetime (например, для JSON, возможно, используйте строку ISO8601преобразования).