我想创建一个接受可变数量对象的方法,并根据提供给该方法的其他参数的数量执行一些操作(如调用对象方法)。
e.g。我有一个带有方法updateTable()的对象X,它接受a,b作为参数。
我想要做的是更新不同对象表的公共代码放在一个方法,例如updateAllTables()。
是否可以将对象和不同的参数捆绑到一个结构中,并提供给接受可变数量的这些结构的方法。
答案 0 :(得分:5)
要使Python函数接受任意数量的参数,只需执行以下操作:
def my_function(*args, **kwargs):
现在args
将是传递给该函数的所有位置参数的列表,kwargs
是所有关键字参数的字典。
由于这是一种方法,您应该明确接受任意args之外的self
:
def my_method(self, *args, **kwargs):
答案 1 :(得分:0)
可变数量的参数可以作为args列表(通常用*args
表示)或作为键值对**kwargs
发送。您应该注意**kwargs
如果您同时通过*args
,则应getattr(yourobject,'yourfunction')(params,*args,**kwargs)
。
您可以使用以下语法动态调用方法{{1}}