如何修复Python使用Datetime时出现的AttributeError报错
报错原因
你出现这个错误是因为导入语句的命名冲突问题:
- 第一行
import datetime是导入整个datetime模块,此时datetime指向模块对象 - 第二行
from datetime import datetime是从datetime模块中导入datetime类,并且直接覆盖了当前命名空间里的datetime变量,此时datetime已经指向datetime类,不再是原来的模块
你后续写datetime.datetime.now()相当于尝试从datetime类中查找名为datetime的子属性,自然就触发了属性不存在的报错。
解决方法(选其中一种即可)
- 直接使用已经导入的datetime类,去掉多余的层级
TimeNow = datetime.now()
- 保留模块调用的写法,删除重复导入的datetime类
调整导入语句为:
import datetime from datetime import date
原有调用代码TimeNow = datetime.datetime.now()可以正常运行
3. 给导入对象起别名避免冲突,适合同时需要用到模块和类的场景
# 给模块起别名 import datetime as dt from datetime import datetime, date # 调用模块层级的方法 TimeNow = dt.datetime.now() # 也可以直接调用已经导入的类 TimeNow2 = datetime.now()
内容的提问来源于stack exchange,提问作者MohamadMansour
相关产品推荐
相关产品推荐

