2017-01-30 84 views
0

我知道super用于在超类中调用init方法,我无法理解哪些kwargs我知道它需要密钥论据这是为什么在python super().__ init __(** kwargs)

它在这里做什么?

class LoginScreen(GridLayout): 

    def __init__(self, **kwargs): 
     super().__init__(**kwargs) 
     self.cols = 2 
     self.add_widget(Label(text = "Username: ")) 
     self.username = TextInput(multiline = False) 
     self.add_widget(self.username) 

     self.add_widget(Label(text="Password: ")) 
     self.username = TextInput(multiline=False, password=True) 
     self.add_widget(self.username) 

     self.add_widget(Label(text="Two Factor Auth: ")) 
     self.tffa = TextInput(multiline=False, password=True) 
     self.add_widget(self.tffa) 
+1

可能重复[\ * \ *(双星)和\ *(星)为参数做些什么?](http://stackoverflow.com/questions/36901/what-does-double-star-and - 星级-DO换参数) – DyZ

回答

3

def __init__(self, **kwargs):包所有的在任何给定的调用__init__使用到dictsuper().__init__(**kwargs)他们又扩展到关键字参数关键字参数。它就像函数参数的通配符。可以通过一种懒惰的方式为子类提供与父类相同的参数签名,而不必再次输入所有可能的关键字参数。只要将它们抓成一团,然后将它们铲到父母身上就可以了。

相关问题