Python-将2组** kwargs传递到同一个Class中。有可能吗?

时间:2017-11-06 07:46:55

标签: python tkinter

假设我有一个名为NewEntry的类,其中包含2个tkinter小部件,ttk.Entryttk.Button,我希望每个小部件都传递**kw_ent和{{1}分别用于Entry和Button小部件,以便在使用此类时启用代码灵活性。

但是,如下面的代码所示,定义2个kwargs会产生语法错误(以这种方式编码时非常明显)。

有没有办法通过2个kwargs?

**kw_but

1 个答案:

答案 0 :(得分:4)

  

有没有办法通过2个kwargs?

很简单:不要使用**kwargs符号。

class NewEntry(ttk.Frame):
    def __init__(self, master=None, kw_ent=None, kw_but=None):
        if kw_ent is None:
            kw_ent = {}
        if kw_but is None:
            kw_but = {}

        # your existsing code here

在实施NewEntry时,您当然必须更加明确 - 假设在a = NewEntry(root, width=13)中,width应该是kw_ent的一部分,您应该{39} ;需要:

a = NewEntry(root, kw_ent={"width":13})

作为旁注,您可能需要考虑一种比#34; ent"更易读的命名方案。或者"但是" - "条目"和"按钮"想到......简短并不意味着含糊不清,3个字母标识符不会让你的代码更快(但它们肯定会降低你的可读性)。