如何将单个值应用于所有kwarg值?

时间:2017-01-16 16:14:16

标签: python kwargs

如果kwargs不存在,我的课程会引用True并默认为kwarg

class MyClass(object):
    def __init__(self, **kwargs):    
        self.kwarg_one = kwargs.get('kwarg_one', True)
        self.kwarg_two = kwargs.get('kwarg_two', True)

MyClass是将继承自子类

的父类
class MyOtherClass(MyClass):
    def __init__(self, **kwargs):
        super(SubclassOne, self).__init__(**kwargs)

MyClass中,kwarg_onekwarg_one将包含boolean个值,这些值将加载大多数子类将使用的特定信息,但某些子类不需要加载信息。在这种情况下,我可以传递False以获取我不需要加载的特定kwarg

moc = MyOtherClass(kwarg_one=False)

在其他情况下,我将拥有仍需要固有MyClass的类,但不需要加载父类加载的任何信息。

moc = MyOtherClass(kwarg_one=False, kwarg_two=False)

只有两个kwargs并不坏,但我预见MyClass接受多个参数,将False传递给10多个参数可能会变得很累。

有没有办法传入False一次,以便所有kwargs都是False

1 个答案:

答案 0 :(得分:1)

您应该使用dict.fromkeys使用可迭代和给定值的键来构建新的dict

moc = MyOtherClass(**dict.fromkeys(('kwarg_one', 'kwarg_two'), False))