这对python super()有什么影响

这对python super()有什么影响,python,Python,我知道super用于调用超类中的init方法,我很难理解kwargs是什么,我知道它需要关键参数 它在这里做什么 class LoginScreen(GridLayout): def __init__(self, **kwargs): super().__init__(**kwargs) self.cols = 2 self.add_widget(Label(text = "Username: ")) self.usern

我知道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)

def\uuuuu init\uuuuuuuuuuself(self,**kwargs):
将任何给定调用
\uuuuuu init\uuuuuuu
中使用的所有关键字参数打包为
dict
super()。\uuuu init\uuuuuuugs(**kwargs)
再次将它们展开为关键字参数。它就像函数参数的通配符。给子类提供与父类相同的参数签名,而不麻烦再次键入所有可能的关键字参数,这可能是一种懒惰的方法。只需将它们作为一团抓取,然后将它们铲到家长那里,让他们弄清楚。

对于exmaple,您可以这样做:

x = LoginScreen(size=1, blahblah=2, something=3)
我们现在:

>>> print(kwargs)
{'size': 1, 'blahblah': 2, 'something': 3}
因此,如果它到达以下行:
super()
它将等于:
super()

请注意:如果不使用双星号“**”,它将等于一个参数作为键:

`super().__init__({'size': 1, 'blahblah': 2, 'something': 3})`
你也可以这样使用它:

options = [1,2,3]
def func(first=None, second=None, last=None):
    print("first arg:", first)
    print("second arg:", second)
    print("third arg:", last)

func(*options)
fuction(key1=value1, key2=value2, key3=value3, ...)
这里我们使用一个星号,因为这是一个列表而不是dict,这意味着展开每个参数的选项列表,输出将是:

first arg: 1
second arg: 2
third arg: 3
但如果我们买入没有星号的期权

func(options)
看看会发生什么:

first arg: [1, 2, 3]
second arg: None
third arg: None
与kwargs相同,只是它们是这样的:

options = [1,2,3]
def func(first=None, second=None, last=None):
    print("first arg:", first)
    print("second arg:", second)
    print("third arg:", last)

func(*options)
fuction(key1=value1, key2=value2, key3=value3, ...)
可能重复的