如何将类作为参数提供给Python函数

Xav*_*det 0 python

我的(第一个!)Python程序中有两个函数,只有必须实例化的类才有所不同.

def f(id):
    c = ClassA(id)
    ...
    return ...

def g(id):
    c = ClassB(id)
    ...
    return ...    
Run Code Online (Sandbox Code Playgroud)

为了避免重复代码,我希望能够编写一个单独的函数,以某种方式接受该类作为参数进行实例化.

def f(id):
    return f_helper(id, ... ClassA ...)

def g(id):
    return f_helper(id, ... ClassB ...)

def f_helper(id, the_class):
    c = ... the_class ... (id)
    ...
    return ...
Run Code Online (Sandbox Code Playgroud)

我很确定这是可能的,但没有找到......

Dan*_*olo 5

这与你的完全一样(减去...s):

>>> class foo:
    pass

>>> def make_it(cls):
    return cls()

>>> make_it(foo)
<__main__.foo instance at 0x011D9B48>
Run Code Online (Sandbox Code Playgroud)

如果你愿意,可以修改它以接受/传递params到类构造函数,但这个想法非常好.类是Python中的第一类对象.