为什么我不能从Tkinter窗口中删除方法/属性?

时间:2011-09-09 22:15:53

标签: python tkinter

我正在尝试使用delattr内置函数从Tkinter窗口派生的类实例中删除方法。但是,我收到以下错误。我究竟做错了什么?

错误:

AttributeError: Class instance has no attribute 'wm_title'

一个例子:

import Tkinter as tk

class Class (tk.Tk) :
    def __init__ (self) :
        tk.Tk.__init__(self)

        # The method is clearly there, seeing as this works.
        self.wm_title('')

        # This raises an AttributeError.
        delattr(self, 'wm_title')


c = Class()
c.mainloop()

1 个答案:

答案 0 :(得分:2)

您无法删除类方法,因为类方法是类的属性,而不是对象。

当您通过object.method()调用方法时,python实际上正在调用Class.method(object)。 (这也是为什么必须在类方法中声明self参数的原因,但在调用该方法时,实际上并没有为self传递任何值。)

如果您愿意,可以致电del Class.wm_title。 (不过我不确定你为什么这么做。)