我正在尝试通过不和谐方式获取用户输入,并使用自己制作的导入文件将其转换为命令。这些命令遵循“ XX![object] [function]命令。如何将输入的字符串转换为对象?或者有某种方式可以使用类似于getattr('x','y')的东西?>
def function():
x = "XX! profile view"
getattr(x.lower().split(" ")[1], x.lower().split(" ")[2])()
return
我希望可以像profile.view()一样执行,但是它给我错误AttributeError:'str'对象没有属性'view'。
答案 0 :(得分:1)
最好不要使用函数字符串名称。正确的方法是创建将字符串名称与函数匹配的字典。
def XX(*args):
print(list(reversed(*args)))
def YY(*args):
print(list(map(str.upper, *args)))
router = {
"XX": XX,
"YY": YY
}
def interpret(string):
if any(string.startswith(key) for key in router):
func_name = string[0: string.index("!")]
args = string[string.index("!") + 2:].split(" ")
router[func_name](args)
x = "YY! profile view"
interpret(x)
答案 1 :(得分:0)
也许您想研究exec()函数:
mystring = r'print("Hello World")'
exec(mystring)
>>>> Hello World