我有一个方法,可以接受3个参数,但如果没有传入,它会从实例化对象中获取它们。下面是我如何设置的:
def getRepo(self, lcid=None, token=None, repoName=None):
repoName=self.repo if repoName==None else repoName
lcid=self.lcid if lcid==None else lcid
token=self.nwbtoken if token==None else token
有更好的方法吗?我好像有重复的代码。如果我可以反复检查这些参数,没有一个我可以做。不要用阿吉斯的方法。我想概述一下这个方法需要什么参数。在
A
使用locals()。https://docs.python.org/2/library/functions.html#locals
基于您的函数的示例:
好吧,我可能会为此付出代价,但我想出了一个解决方案:
因此,当不带参数调用方法时,将使用实例属性,但如果在方法调用上设置了参数,则实例变量将被覆盖
在上面展开的是一个实现这一点的元类:
^{pr2}$因此,无论在trythis类上定义了什么方法,当调用方法时,它们的参数都会自动设置在trythis对象上,并且执行此操作的代码被提取到一个元类中
使用kwargs参数:
使用kwargs可以将局部变量设置为通过函数调用获得的值,或者在未传递参数的情况下将其设置为默认值。在
调用函数时,将按如下方式调用:
^{pr2}$您也可以省略这些
named parameters
,您的函数将使用您指定的默认值。在相关问题 更多 >
编程相关推荐