我的(第一个!)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)
我很确定这是可能的,但没有找到......
这与你的完全一样(减去...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中的第一类对象.