我打电话
exec(compile(open(self.filename, "rb").read(), self.filename, 'exec'))
在我的实体类的init方法中加载spider.py:
import util, colors, random
self.dtouch = False
def touch2(self, entity):
self.level.ps.add_particle(self.get_rect().x + random.randint(0, 31), self.get_rect().y + random.randint(0, 31), 0, -5, 2, 2, colors.RED, 500 + random.randint(0, 50))
当玩家触摸spieder时,我在我的原始触摸方法中调用touch2(entity)
来执行spider.py中touch2方法中的代码。
但是当我这样做时,我收到了这个错误:
NameError: name 'touch2' is not defined
有谁知道,我如何从我在init中加载的其他类调用该方法?
编辑:导入Lib不起作用...有人能告诉我如何修复该错误并使用我加载的哪个类的方法?
答案 0 :(得分:0)
据我所知,您正在阅读文件而不是导入文件。改变这一行
exec(compile(open(self.filename, "rb").read(), self.filename, 'exec'))
到
import spider
希望这会有所帮助:)
更新:
正如@DanielRoseman在评论中提到的,如果你使用importlib
模块(我个人没有经验,所以我很遗憾无法帮助),你应该可以使用{{1而不必使用self.filename
。