Python 3.x 如何将kwargs传递给类函数

Python 3.x 如何将kwargs传递给类函数,python-3.x,tkinter,Python 3.x,Tkinter,我在类继承方面没有太多经验。我知道您可以通过*args和**kwargs将任何变量传递给类实例,这有助于容纳子类 在下面的示例中,我想在实例化一个类时传递title、theme和size,这对我来说很有用:self.title('App')和self.set\u theme('radiance')。现在,我只是替换属性,即,self.title='App'和self.set\u theme='radiance',这不符合我的要求 class App(ThemedTk): def __in

我在类继承方面没有太多经验。我知道您可以通过*args和**kwargs将任何变量传递给类实例,这有助于容纳子类

在下面的示例中,我想在实例化一个类时传递title、theme和size,这对我来说很有用:
self.title('App')
self.set\u theme('radiance')
。现在,我只是替换属性,即,
self.title='App'
self.set\u theme='radiance'
,这不符合我的要求

class App(ThemedTk):
    def __init__(self, **kwargs):
        super().__init__()
        self.__dict__.update(kwargs)

dic = {
    'title': 'App',
    'set_theme': 'radiance',
}
app = App(**dic)
app.mainloop()

我相信你在找这样的东西

从TTK主题导入
类应用程序(TK):
定义初始(自我,**kwargs):
title=kwargs.pop('title','')
theme=kwargs.pop('set_theme',无)
超级()
自己的头衔(头衔)
如果主题:
self.set_主题(主题)
dic={
“标题”:“应用程序”,
“设置主题”:“光辉”,
}
应用=应用(**dic)
app.mainloop()

您可以
pop
kwargs.pop(key,default)
)取出
kwargs
,该
kwargs
没有进入
主题TK
初始化
功能,然后稍后将它们传递到相应的方法中。

基于@AST的回答:

从TTK主题导入
类应用程序(TK):
#`title`的默认值为“Tk”,并且
#“主题”的默认值为“无”`
定义初始化(self,title=“Tk”,theme=None,**kwargs):
超级()
自己的头衔(头衔)
#如果主题为“无”,则跳过它
如果主题不是无:
self.set_主题(主题)
dic={
“标题”:“应用程序”,
“设置主题”:“光辉”,
}
应用=应用(**dic)
app.mainloop()
我希望ThemedTK init接受这些参数,但不。。。我的临时解决方案是:self.title(kwargs.pop('title'))self.set_主题(kwargs.pop('set_主题'))self.geometry(kwargs.pop('geometry'))self.\u dict_uu_u.update(kwargs)