我想在类中使用返回值,但是我不知道如何使其自动实现。假设我给了敌人(“ e21”),它返回e21
我尝试用字符串替换返回值,但不适用于我的班级
# <-- means separate file (and they are imported)
def e_info(input1, monster):
if input1 == "name":
return monster.name
#
def enemy(input2):
if input2 == "e1":
return e1
if input2 == "e2":
return e2
#
print(2 * "\n" + e_info("name", m.enemy(enemy_info)))
#
class Enemy:
def __init__(self, name):
self.name = name
e1 = Enemy("Test1")
答案 0 :(得分:1)
也许像字典那样将变量作为字符串返回?
def func(input2)
return
{
'e1': str(e1),
'e2': str(e2)
}[input2]
答案 1 :(得分:1)
通常的方法是制作一个将字符串映射到值的字典:
def func(input2):
mapping = {
"e1": e1,
"e2": e2,
}
return mapping[input2]
但这假设input2
的所有可能值是预先已知的。如果不是这种情况,并且input2
可以是任意值,那么您就必须使用类似exec()
的方法,如@Victor的答案。
答案 2 :(得分:-1)
您可以使用内置函数exec()来做到这一点:
def func(input2):
exec("return "+input2)
但是我认为使用exec()来完成这项工作不是很好。 为什么需要此功能?这是很少使用的功能。