Python的问题与exec

时间:2014-05-18 18:23:23

标签: python exec

我打电话

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不起作用...有人能告诉我如何修复该错误并使用我加载的哪个类的方法?

1 个答案:

答案 0 :(得分:0)

据我所知,您正在阅读文件而不是导入文件。改变这一行

exec(compile(open(self.filename, "rb").read(), self.filename, 'exec'))

import spider

希望这会有所帮助:)

更新:

正如@DanielRoseman在评论中提到的,如果你使用importlib模块(我个人没有经验,所以我很遗憾无法帮助),你应该可以使用{{1而不必使用self.filename