L. *_*oer -1 python time pygame python-3.x
对于我正在使用的扫雷游戏time.time(),我已经导入了两个time和pygame.这是我的错误报告
line 5, in save_score
end = time.time()
AttributeError: module 'pygame.time' has no attribute 'time'
Run Code Online (Sandbox Code Playgroud)
在这里你有证据证明我确实导入了时间和pygame:
import sys, math, time
def save_score(name, size, mine):
end = time.time()
~
from pygame import *
Run Code Online (Sandbox Code Playgroud)
如果有人可以解释如何避免/修复此错误,那将非常感激.
由于您的行,您遇到了命名空间冲突:
from pygame import *
Run Code Online (Sandbox Code Playgroud)
这会污染您的全局命名空间,包含您可以从pygame导入的所有内容.它使懒惰的生活变得简单 - 你不必引用特定的命名空间来使用pygame的功能.但它也有一些不好的后果.
在这种情况下,您已将"time"作为全局命名空间中的模块导入.当您从pygame导入时,它有一个名为time的子模块.pygame.time替换你的常规时间模块.
解决此问题的方法是正确使用模块/命名空间.
一种方法,而不是使用from pygame import *,而是使用:
import pygame
Run Code Online (Sandbox Code Playgroud)
但是你必须将pygame放在每个对pygame函数或模块的引用之前.这通常是好的,这样你和其他任何读取你代码的人都知道你正在调用什么函数.
您可以使用import ... as以下内容将其缩写一点:
import pygame as pg
Run Code Online (Sandbox Code Playgroud)
然后pygame.time你会这样做,而不是像你这样做pg.time.
如果您想要专门放入全局命名空间中,可以执行以下操作:
from pygame import foo
Run Code Online (Sandbox Code Playgroud)
要么
from pygame import time as pygt
Run Code Online (Sandbox Code Playgroud)
但是,如果你from pygame import time或者from pygame import *,pygame中的时间将覆盖其他时间模块.
| 归档时间: |
|
| 查看次数: |
212 次 |
| 最近记录: |