【发布时间】:2014-06-26 13:44:58
【问题描述】:
我再次发现自己在这里,拼命地乞求答案:)
所以我对 python 中的导入有疑问。我的主要代码导入了一个仅包含一个类的辅助模块。我正在尝试导入和使用此类,而无需在辅助模块中导入任何内容。但是,Python 抓住了我,说某些东西不存在等等。
File "C:\Users\CR0SS0V3R\Desktop\Pathogen\mutations.py", line 24, in draw
pygame.circle.draw(screen, self.color, (self.posx, self.posy), 5, 0)
NameError: global name 'pygame' is not defined
Python 要求我再次导入 Pygame。我只想从辅助模块加载类代码,这样我就可以在我的主程序中使用它。我无法创建screen 的另一个实例,因为我只能将一个用于绘制到屏幕上的图形。我真的很想避免再次导入模块的冗余。我希望我的程序干净,OOP 明智。为类创建一个单独的文件要求太多了吗?请帮忙。我整晚都在寻找答案,但无济于事。
准备一堵文字墙。
这是我的辅助模块的全部代码。 (一个班级。)
class RadiantRegrowth:
def __init__(self):
self.name = "Radiant Regrowth"
self.posx = 0
self.posy = 0
self.spawned = False
self.color = (0,255,0)
def applyaffect(self, target):
if self.spawned == True:
target.health += 1
else:
pass
def spawn(self, x, y):
spawnx = random.randint(50, x-50)
spawny = random.randint(50, y+50)
self.posx = spawnx
self.posy = spawny
self.spawned = True
def draw(self):
pygame.draw.circle(screen, self.color, (self.posx, self.posy), 5, 0)
在最后一行,关于在我的类内部定义中定义的 pygame 的使用,这让我很着迷。是的,代码可能很混乱,充满了无用的琐碎信息,但在这一点上,我只想要一些跛行的东西。
我是这样导入的。
from mutations import *
在几段可忽略不计的代码之后使用一个简单的调用(程序甚至没有走这么远,仅供参考。
radiantregrowth = RadiantRegrowth()
这是对辅助模块的第一次调用。就像我说的;该程序在尝试导入辅助模块mutations 时立即停止,因为它希望我再次导入pygame,并再次设置屏幕。我不会做任何事Global。
抱歉有任何冗余。我试图尽可能清楚地说明这一点。
【问题讨论】:
-
如果您要在这里提出很多问题,您可能应该学习如何在帖子中正确缩进 Python 代码。
标签: python import module pygame redundancy