我有一个脚本,需要在脚本的不同行执行以下命令:
today_date = datetime.date.today() date_time = datetime.strp(date_time_string, '%Y-%m-%d %H:%M')
在我的import陈述中,我有以下内容:
import
from datetime import datetime import datetime
我收到以下错误:
AttributeError: 'module' object has no attribute 'strp'
如果我将import语句的顺序更改为:
import datetime from datetime import datetime
AttributeError: 'method_descriptor' object has no attribute 'today'
如果我再次将import语句更改为:
import datetime
这是怎么回事,我怎么都可以工作?
您的麻烦是,您有一些代码希望datetime对datetime 模块 进行引用,而其他代码希望datetime对类进行引用datetime 。 显然,不能两者兼有。
datetime
当您这样做时:
您首先要设置datetime为对该类的引用,然后立即将其设置为对模块的引用。当您以另一种方式执行此操作时,它是同一件事,但是最终它是对该类的引用。
您需要重命名这些引用之一。例如:
import datetime as dt from datetime import datetime
然后,您可以将引用datetime.xxxx模块的形式的引用更改为dt.xxxx。
datetime.xxxx
dt.xxxx
否则,只需import datetime更改所有引用即可使用模块名称。换句话说,如果有话说,datetime(...)您需要将其更改为datetime.datetime。
datetime(...)
datetime.datetime
不幸的是,Python在它的库中有很多类似的东西。如果他们遵循PEP 8中自己的命名准则,则将为datetime该类命名,Datetime并且使用它们既datetime表示模块又Datetime表示类都没有问题。
Datetime