对于一个使用time.time()的扫雷游戏,我已经同时导入了time和pygame。这是我的错误报告
line 5, in save_score
end = time.time()
AttributeError: module 'pygame.time' has no attribute 'time'这里有一个证据,证明我确实导入了时间和游戏:
import sys, math, time
def save_score(name, size, mine):
end = time.time()
~
from pygame import *如果有人能解释如何避免/修复这个错误,我们将不胜感激。
发布于 2016-11-22 16:03:55
由于您的行,您遇到了命名空间冲突:
from pygame import *这会污染您的全局命名空间,因为您可以从pygame中导入所有内容。它使懒惰的生活变得容易--您不必引用特定的名称空间来使用pygame的函数。但它也有一些不好的后果。
在本例中,您已经将"time“作为全局命名空间中的一个模块导入。当你像从游戏中导入一样,它有一个叫做time的子模块。pygame.time替换您的常规时间模块。
解决这个问题的方法是正确地使用模块/命名空间。
这样做的一种方法是,不要使用from pygame import *,而是使用:
import pygame但是,你必须把游戏放在每个关于游戏函数或模块的引用前面。这通常是好的,这样您和任何阅读您的代码的人都会确切地知道您正在调用哪个函数。
您可以使用import ... as将其缩略一点。
import pygame as pg然后,您将不做像pygame.time这样的事情,而是执行pg.time。
如果需要将某些特定内容放入全局命名空间,则可以执行以下操作:
from pygame import foo或
from pygame import time as pygt但是,如果您执行from pygame import time或from pygame import *,游戏的时间将覆盖另一个时间模块。
https://stackoverflow.com/questions/40746173
复制相似问题