2016-12-04 6 views
1

私はtkinterチュートリアルを行っていますが、self.master.title()呼び出しを理解するのは苦労しています。建設中にマスターにNoneのデフォルト値が割り当てられているようです。 masterself.masterに割り当てられ、それによってself.masterがNoneTypeオブジェクトになります。 self.master.title属性はどこから来たのですか?NoneTypeオブジェクトのメソッド属性

import tkinter as tk 

class Window(tk.Frame):       

    def __init__(self, master = None):   
     tk.Frame.__init__(self, master)   
     self.master = master 
     self.init_window() 

    def init_window(self):  
     self.master.title("GUI") 
     self.pack() 
+0

'Window'が' master'の値なしでインスタンス化されると、 'self.master.title'はAttributeErrorで失敗します。 – 101

答えて

1

masterには、引数が指定されていない場合、このデフォルトは問題だけでしょうNoneのデフォルト値を持っていますが(すなわち、thing = Window())。

引数が指定されている場合(つまりthing = Window(SomeTKinterObject))、self.masterは引数(この場合はSomeTKinterObject)になります。

+0

ありがとうございます - そうです。 positionで渡された引数は、デフォルトの関数引数をオーバーライドし、名前で照合する必要はありません。 –

+0

これがあなたの質問に答えた場合は、私はいくつかの点を得ることができますので、チェックマークを与えてください。 – timotree

+0

(to @antoneous_rex) – timotree

関連する問題