导入模块==从模块导入*?
问题内容:
我的Django教程有问题,所以我在这里问了一个问题。
没有人知道答案,但是我最终在罗伯特的帮助下找到了答案。Python似乎与对待import datetime
相同from datetime import *
。
工作代码:
import datetime
from django.db import models
class Poll(models.Model):
question = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
def __unicode__(self):
return self.question
def was_published_today(self):
return self.pub_date.date() == date.today()
不起作用的代码:(唯一的区别是import语句和最后一行。)
from django.db import models
import datetime
class Poll(models.Model):
question = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
def __unicode__(self):
return self.question
def was_published_today(self):
return (self.pub_date() == datetime.date.today())
编辑: 我想我还不够清楚。的代码产生 完全相同的回溯到最后一行是 return (self.pub_date.date() == datetime.date.today())
我最初不忘补充.date()
是 不是 我问的错误。
由不起作用的代码产生的回溯:
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/myDir/mySite/polls/models.py", line 11, in was_published_today
return (self.pub_date() == datetime.date.today())
TypeError: 'datetime.datetime' object is not callable
到底为什么要这样做?
我的问题 不是 关于遗忘.date()
。我的问题是:为什么不使用,日期时间在我的命名空间中from datetime import *
。
注:第一个问题问 什么 它在做什么。这个问题问 为什么。
更新: 突然起作用。与datetime.date.today()
AND
date.today()
。我的问题仍然存在,为什么date.today()
有效?似乎日期时间在我的本地名称空间中,而我没有放在那儿。为什么?
问题答案:
正如我们在评论中讨论的那样,问题不在于代码,而在于更新源代码的方式。python在中缓存模块sys.modules
。您可以使用reload
函数重新加载各个模块,但是对于许多更改,最好重新加载整个Shell。在许多情况下,由于错误消息似乎已发生更改,因此更改似乎已传播出去,这是因为python不缓存文件的源代码,因此当它引用代码时,它将向您显示最新版本。希望现在,您可以成功应用其他答案。