假设我有一个函数:
def omni(self, func, *args, **kwargs):它总是调用func。
但是,func的参数可以是任意组合。例如
def func(self):
# omni should only pass in self
def func():
# omni should pass in nothing
def func(foo, key='foo'):
# omni should pass in a foo param and a key if supplied one
def func(*args, **kwargs):
# omni should pass in everything有没有办法只把必要的参数从omni传递给func?也就是说,上述情况有可能吗?
例如。
def foo(m):
pass
obj.omni(foo, m, a=1)
# this should call
foo(m)
def foo(self, **kwargs):
pass
obj.omni(foo, m, 1, b=2)
# this should call
foo(self, b=2)发布于 2013-11-25 16:17:57
def omni(self=None, func=None, *args=None, **kwargs=None)您应该如上所述使用可选参数。请看这里,http://www.diveintopython.net/power_of_introspection/optional_arguments.html。
发布于 2013-11-25 16:47:43
这听起来很复杂。
您必须检查func,对于func是对象的情况,还要检查func.__call__。
一个实数函数有一个func_defaults和一个func_code,后者又有一个co_argcount和一个co_flags。
在他们的帮助下,你可以检查
*args / **kwargs则为https://stackoverflow.com/questions/20187580
复制相似问题