一尘不染

使用模块名称(字符串)调用模块的函数

javascript

在 Python 程序中给定带有函数名称的字符串,调用函数的最佳方法是什么。例如,假设我有一个 module foo,并且我有一个字符串,其内容是"bar". 最好的打电话方式是foo.bar()什么?

我需要获取函数的返回值,这就是为什么我不只使用eval. 我想出了如何通过使用eval定义一个返回该函数调用结果的临时函数来做到这一点,但我希望有一种更优雅的方式来做到这一点。


阅读 148

收藏
2022-02-10

共1个答案

一尘不染

假设foo具有方法的模块bar

import foo
method_to_call = getattr(foo, 'bar')
result = method_to_call()

您可以将第 2 行和第 3 行缩短为:

result = getattr(foo, 'bar')()

如果这对您的用例更有意义。

您可以getattr以这种方式在类实例绑定方法、模块级方法、类方法上使用……不胜枚举。

2022-02-10