如何将函数的名称传递给函数,然后调用它?

时间:2009-11-02 10:00:22

标签: python

  1. 如何将函数名称传递给函数然后调用它? 是否可以在不使用getattribute的情况下执行此操作?

  2. 如何将类名传递给函数然后实例化该类? 我知道我可以将类的实例直接传递给函数,但是在调用函数之后,实例化非常重要。

4 个答案:

答案 0 :(得分:5)

def outer(f):          # any name: function, class, any callable
    return f()         # class will be instantiated within the scope of the function

答案 1 :(得分:2)

namespace = globals()
result = namespace[func_name]()
instance = namespace[class_name](*some_args)

您可以使用自己的字典(命名空间)代替globals

目前尚不清楚为什么需要人工约束,例如不直接传递函数/类对象,而不是getattr()

答案 2 :(得分:1)

如果您计划使用的选项数量有限,则可以设置包含字符串键和函数/类值的字典。

答案 3 :(得分:0)

为什么不直接使用函数和类?

class A(object):
    pass
def f():
    pass
def g(func, cls):
    func()
    x = cls()
g(f, A)