python - 如何自动化不是字符串的函数返回值?
问题描述
我想将返回值与类一起使用,但我不知道如何使其自动化。假设我给敌人(“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")
解决方案
执行此操作的常用方法是制作一个将字符串映射到值的字典:
def func(input2):
mapping = {
"e1": e1,
"e2": e2,
}
return mapping[input2]
但这假设所有可能的值input2
都是预先知道的。如果不是这种情况,并且input2
可以是任意值,那么您将不得不使用类似于exec()
@Victor 的答案的东西。
推荐阅读
- structure - 如何创建冗余较少的项目结构?
- vba - VBA:使用“字符串”在 UBOUND 中引用具有该名称的“数组”
- ruby - 我在使用 API 时遇到问题
- flex-lexer - 消除 Lex 代码中数字之间的字符
- python - 如何使用python selenium点击多个雅虎标签
- swift - 无法使用 CoreData 'NSManagedObject' 获取数据没有成员 'fetch'
- node.js - Sequelize 将查询参数分配给模型
- java - 如何使两个数组具有不同的引用?
- python - 对如何仅从列表中打印数字并将其转换为浮点数感到困惑
- r - 如何切片此数据集