在Python中,如何使“class”(作为参数传递时)与“class.attribute”一样工作?

时间:2015-06-16 22:46:02

标签: python python-2.7 tkinter

所以,我目前正在制作一个自定义Tkinter模块/ API,因此我可以更好地理解Tkinter,但我遇到了一个问题。假设我有以下代码:

import Tkinter as tk

Class Window(object):  # Equivalent of Tkinters Tk() in my module
    def __init__(self):
        self.root = tk.Tk()
        ...


Class Label(object):  # Equivalent of Tkinters label widget in my module
    def __init__(self, master):
        self.label = tk.Label(master, text="Hello world!")
        ...

当我创建标签小部件时,我怎么能这样做呢?我可能会这样做

master = Window()
label = Label(master)

而不是必须做

master = Window()
label = Label(master.root)

我知道我可以将tk.Tk继承到我的窗口类中,但我只是好奇是否有不同的方法。我做了一些研究,似乎它可能与其中一个带有前导和尾随双下划线的内置方法有关(不知道它们叫什么),但我不知道大多数这些做。

P.S。抱歉标题不好,不知道如何用短句形容它:P

1 个答案:

答案 0 :(得分:0)

你可以写:

self.label = tk.Label(master.root, text="Hello world!")

但正如布莱恩和保罗所说,继承自tk.Tk是最好的事情。