4

次のコードの 5 行目で、何をしFrame.__init__ますか? 誰かがその背後にある概念を説明できますか? どうもありがとう!

from Tkinter import *
class AppUI(Frame):

    def __init__(self, master=None):
        Frame.__init__(self, master, relief=SUNKEN, bd=2)
        [...]

編集: ここに正しいインデントを含む完全なコード

4

2 に答える 2

12

クラスは のクラスにAppUI基づいています。これは、クラスが のタイプであるが、一部の動作がわずかに異なるかカスタマイズされていることを意味します。これは、クラスのメソッドがクラスからコードを呼び出す必要がある場合があることを意味します (実際、通常は必要になります) 。つまり、クラスと同じことをしたいのですが、それ以外のことしたいのです。それがここで起こっていることです: をインスタンス化するとき、それを最初に初期化してから、固有の初期化を実行します。FrameTkinterAppUI FrameAppUIFrameAppUIFrameAppUIFrameAppUI

ここでAppUIは、親クラスの__init__()メソッドを明示的に呼び出します。

関数を使用してこれを行うこともできsuper()ます。通常はそうします。基本的に、多重継承のシナリオでは必須です。しかし、Tkinter は「古いスタイルのクラス」を使用するため、ここでは古い方法で行う必要があります。

于 2013-09-20T19:36:28.677 に答える