关于python:将字符串转换为具有相同类的函数调用

Convert string into a function call withing the same class

对于同一类中的函数,如何将字符串转换为函数调用?我用这个问题来帮助一点,但我认为它与"自我"有关。

1
2
3
ran_test_opt = choice(test_options)
ran_test_func = globals()[ran_test_opt]
ran_test_func()

其中test_options是字符串格式的可用函数名称列表。通过上面的代码,我得到了错误

1
KeyError: 'random_aoi'


不要使用globals()(函数不在全局符号表中),只使用getattr

1
ran_test_func = getattr(self, ran_test_opt)

globals()是一个你应该非常非常非常很少使用的函数,它有混合代码和数据的味道。用字符串中的名称调用实例方法类似,但稍微不那么容易。使用getattr

1
2
ran_test_func = getattr(self, ran_test_opt)
ran_test_func()