如何自动化不是字符串的函数的返回值?

时间:2019-07-26 15:44:15

标签: python string function

我想在类中使用返回值,但是我不知道如何使其自动实现。假设我给了敌人(“ 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")

3 个答案:

答案 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()来完成这项工作不是很好。 为什么需要此功能?这是很少使用的功能。