2011-09-09 7 views
2

delattr組み込み関数を使用して、Tkinterウィンドウから派生したクラスインスタンスからメソッドを削除しようとしています。しかし、私は次のエラーが発生します。私は間違って何をしていますか?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() 

答えて

2

クラスメソッドはクラスではなく、オブジェクトのプロパティですので、あなたはそのようにクラスメソッドを削除することはできません。

object.method()でメソッドを呼び出すと、pythonは実際にはClass.method(object)を呼び出しています。 (これはクラスメソッドでself引数を宣言する必要があり、まだそのメソッドを呼び出すときに、あなたが実際にselfのための任意の値を渡さない理由もある。)

あなたがしたい場合は、del Class.wm_titleを呼び出すことができます。 (なぜあなたがしたいのか分かりませんが)

関連する問題