如何在Python构造函数中分配关键字varargs



我调用一个带有参数s=1,t=2,y=3但没有p的构造函数。因为p没有定义,所以没有设置。我已经考虑过使用*而不是**,但我仍然希望使用关键字。

class Creator(object):
    def __init__(self, **kwargs):
        if len(kwargs) > 1:
            self.scenario = kwargs.pop('s')
            self.t = kwargs.pop('t')
            self.y = kwargs.pop('y')
            self.p = kwargs.pop('p')

我如何解析我选择的参数(即var(kw)args),同时忽略那些我没有传递的参数的赋值?

由于kwargs只不过是dict,所有的dict方法都可以在上面使用。

特别是,如果您想从中检索可能不存在的值,可以使用dict.get

如果关键字在字典中,则返回关键字的值,否则为默认值。如果没有给定default,它默认为None,因此此方法永远不会引发KeyError。

因此代码将如下所示:

self.p = kwargs.get('p')  # self.p will be None if "p" is not in kwargs
self.p = kwargs.get('p', MY_VALUE)  # self.p will be MY_VALUE if "p" is not in kwargs

或者,会员资格的标准检查也可以:

if 'p' not in kwargs:
    pass  # do something

最新更新