如何在Python构造函数中分配关键字变量?

时间:2016-04-28 15:08:37

标签: python-2.7 variadic-functions

我调用一个构造函数,其参数为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),而忽略那些我没有通过的参数?

1 个答案:

答案 0 :(得分:1)

由于kwargs只不过是dict,所以可以使用所有dict方法。

特别是,如果您想要从中删除可能缺席的值,您可以使用dict.get

  

如果key在字典中,则返回key的值,否则返回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