我正在尝试使用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()
答案 0 :(得分:2)
您无法删除类方法,因为类方法是类的属性,而不是对象。
当您通过object.method()
调用方法时,python实际上正在调用Class.method(object)
。 (这也是为什么必须在类方法中声明self
参数的原因,但在调用该方法时,实际上并没有为self
传递任何值。)
如果您愿意,可以致电del Class.wm_title
。 (不过我不确定你为什么这么做。)