Python - 全局名称 'date' 未定义

-2 投票
2 回答
9668 浏览
提问于 2025-04-18 17:25

我在Django的视图里使用这个。我完全照着这个链接上的内容做的:http://www.pythonexamples.org/2010/12/23/how-to-get-todays-date-in-python/

也就是:

import datetime
variable = datetime.date.today()

我还试过

from datetime import datetime
variable = datetime.date.today()

但是出现了这个错误:

'method_descriptor' object has no attribute 'today'

2 个回答

0

首先,我们来看看这段代码:

import datetime
variable = datetime.date.today()

这段代码运行得很正常。

接下来是这段代码:

from datetime import datetime
variable = datetime.date.today()

这段代码就会出现你提到的错误。原因是,datetime.datetime.date是一个方法,而不是一个类。datetime.date.today是一个方法,但datetime.datetime.date.today就不对了(多了一个datetime就是问题所在)。

你首先应该打开一个解释器(在命令提示符下输入python),然后只输入前两行代码。这样应该能正常运行。(如果不行,我建议你重新安装一下python)

如果能正常运行,那问题就出在你的代码文件里。可能是你的代码中有东西覆盖了其中一个类。因为你没有提供第一个代码示例的错误信息(那个是正确的),我也无法猜测是哪一个类出了问题……不过你可以仔细检查一下你的导入语句和在导入datetime之后定义的变量,看看有没有问题。

2

你问为什么会发生这种情况……所以我来试试,这是我在Stack Overflow上的第一次回答。

我觉得这可能是作用域或命名空间的问题。

检查一下今天的函数(today())的作用域。它在你调用它的地方能访问到吗?

再看看这个链接:http://igotgenes.blogspot.gr/2009/01/class-attributes-and-scoping-in-python.html

还有这个:https://docs.python.org/2/tutorial/classes.html

这样可以更深入地理解可能发生的原因。

抱歉,我帮不了更多,因为我没有你整个项目的代码 :(

编辑:只是几个小错误。

撰写回答