首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将kwargs传递给类函数

如何将kwargs传递给类函数
EN

Stack Overflow用户
提问于 2021-03-12 04:51:44
回答 2查看 57关注 0票数 0

我对类继承没有太多的经验。我知道你可以通过*args和**kwargs将任何变量传递给类实例,这有助于适应子类。

在下面的示例中,我想在实例化一个类时传递标题、主题和大小:self.title('App')self.set_theme('radiance')。现在我只是替换属性,即self.title = 'App'self.set_theme = 'radiance',这并不是我想要的……

代码语言:javascript
复制
class App(ThemedTk):
    def __init__(self, **kwargs):
        super().__init__()
        self.__dict__.update(kwargs)

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

回答 2

Stack Overflow用户

发布于 2021-03-12 05:43:49

我相信你正在寻找这样的东西

代码语言:javascript
复制
from ttkthemes import ThemedTk

class App(ThemedTk):
    def __init__(self, **kwargs):
        title=kwargs.pop('title','')
        theme=kwargs.pop('set_theme',None)
        super().__init__(**kwargs)
        self.title(title)
        if theme:
            self.set_theme(theme)

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

您可以pop (kwargs.pop(key, default))出一开始没有进入ThemedTk__init__函数的kwargs,然后稍后将它们传递到各自的方法中。

票数 1
EN

Stack Overflow用户

发布于 2021-03-12 06:29:42

基于@AST的回答:

代码语言:javascript
复制
from ttkthemes import ThemedTk

class App(ThemedTk):
    # The default value for `title` is "Tk" and
    # the default value for `theme` is `None`
    def __init__(self, title="Tk", theme=None, **kwargs):
        super().__init__(**kwargs)
        self.title(title)
        # If the theme is None just skip it
        if theme is not None:
            self.set_theme(theme)

dic = {
    'title': 'App',
    'set_theme': 'radiance',
}
app = App(**dic)
app.mainloop()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66590386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档