首页 > 解决方案 > 如何自动化不是字符串的函数返回值?

问题描述

我想将返回值与类一起使用,但我不知道如何使其自动化。假设我给敌人(“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")

标签: pythonstringfunction

解决方案


执行此操作的常用方法是制作一个将字符串映射到值的字典:

def func(input2):
    mapping = {
        "e1": e1,
        "e2": e2,
    }
    return mapping[input2]

但这假设所有可能的值input2都是预先知道的。如果不是这种情况,并且input2可以是任意值,那么您将不得不使用类似于exec()@Victor 的答案的东西。


推荐阅读