2017-01-16 19 views
0

我有一個課程需要kwargs,如果kwarg不存在,則默認爲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) 

MyClasskwarg_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

+0

'dict.fromkeys'? –

+0

如果我理解正確,你可以在MyClass上使用__init __(self,arg_one = False,arg_two = False,** kwargs),不是嗎?你也可以使用默認配置字典,所有默認值都設置爲false,並使用kwargs作爲參數的update方法,從而用kwargs中的設置覆蓋默認值。 –

回答

1

你應該使用dict.fromkeys來建立一個新的dict與鍵迭代和給定的值。

moc = MyOtherClass(**dict.fromkeys(('kwarg_one', 'kwarg_two'), False)) 
相關問題