为何datetime对象被转换为字符串?代码实例解析
问题解答
是的,正是因为调用了isoformat()方法,导致created_at变成了字符串类型。
原因说明
datetime.now()本身返回的是datetime对象,但isoformat()是datetime类的内置方法,作用是将datetime对象转换为符合ISO 8601标准的字符串(例如2024-05-20T14:30:00.123456),所以把该方法的返回值赋值给created_at后,属性类型自然变为字符串。
解决方案
若要让created_at保持datetime对象类型,直接去掉isoformat()调用即可:
from datetime import datetime from uuid import uuid4 class Model: def __init__(self, *args, **kwargs): """Instantiation Method""" if not kwargs: self.id = uuid4() self.created_at = datetime.now() self.updated_at = datetime.now()
验证修改
执行以下代码检查类型:
t = Model() print(type(t.created_at))
输出结果会变为:
<class 'datetime.datetime'>
内容的提问来源于stack exchange,提问作者Leuel Asfaw
相关产品推荐
相关产品推荐

