【发布时间】:2017-05-27 23:55:25
【问题描述】:
如果我先向您展示我的代码,这可能是最简单的:
def use(self):
target = self.requestTarget()
target = str(target)
exec(self.whatDoes+"("+target+")")
self.requestTarget 返回player,一个对象。 self.whatDoes 是 "learnAttack"。 learnAttack() 将一个对象作为其参数,并将一个项目附加到目标具有的列表中。
当我运行这段代码时,我得到了错误:
learnAttack(<character object at 0x7fda68acf1d0>)
^
SyntaxError: invalid syntax
诚然,我本可以更好地编写代码,但我设置了一个完整的框架,更改此代码将涉及很多我懒得做的工作。
很抱歉使用exec()。
【问题讨论】:
-
你想把什么传递给你的日常工作?除非您定义
__str__方法,否则对象上的str可能会返回那种输出。 -
你为什么要使用
exec? -
@JimFasarakis-Hilliard XY 问题,再次。
-
制作
self.whatDoes = learnAttack(函数,而不是字符串)。那么self.whatDoes(target)等价于learnAttack(target) -
你应该创建字典
functions["learnAttack"] = learnAttack然后你不需要exec()但functions[self.whatDoes](target)。然后您不必将target转换为string,因此SyntaxError没有问题。
标签: python function python-3.x oop