我在python中有一组函数,它们获得相同的2个参数+其他参数。在
def myMethodA (param1, param2, specificParm)
do code
def myMethodB (param1, param2, specificParm1 specificParam2)
do code
我想创建一个decorator,通过在调用函数之前推送参数,用前2个参数替换调用的需要:
^{pr2}$但是如果我省略了参数,那么decorator也不能调用它,如果我离开它们,那么调用者也需要指定它们。在
不管怎样解决这个问题? 我能用args*做些什么吗?但仍然有specificParam的命名参数? 另外,如何在myMethodA中引用param1和param2
我建议你还是老派,用^{} 重新分配名字:
然后在其他地方(或文件中的较低位置,如果您愿意)可以执行以下操作:
^{pr2}$听起来你可能想要
functools.partial
。它返回一个新函数,其中一些参数已经指定:当您调用decorator包装器函数中的函数作为
kwargs
的一部分时,可以添加这两个参数。在调用之前,所有修饰函数都会自动将这两个参数作为关键字参数传递:如果从主函数调用中传递的是每个函数的特定参数,则可以删除
args
部分。在相关问题 更多 >
编程相关推荐