2014-01-09 57 views
5

私はwxPythonを学んでいます。例の一つでは、次のようなコードは次のとおりです。wxPythonのOnInitと__init__

import wx 

class App(wx.App):  
    def OnInit(self): 
     frame = wx.Frame(parent=None, title = 'bare') 
     frame.Show() 
     return True 


app=App() 
app.MainLoop() 

をそして私はクラスAppはコンストラクタが、機能OnInitを持っていないことに気づきました。私が知る限り、Pythonクラスは__init__関数で構築されています。

したがって、OnInitは特定のクラスの関数ですか?それともコンストラクタの別のタイプですか?

私がこのことを初めて知ったので、私の無知を許してください。ありがとう。 wx.App.__init__ documentationによると

答えて

4

あなたはシステム、ツールキットとwxWidgetsのが完全に初期化されていることを を確保するためにapplicaitionの初期化を行うためにOnInitをオーバーライドする必要があります。

- >OnInitのメソッドは、wx.Appを派生するクラスのみです。それは言うようになっ

あなたがbook-良い本を推薦する「アクションでwxPythonを」からコードを得たと仮定すると、

1

は、...(イム必ずあなたが今することによって、これを赤ている)

アプリケーション クラスの()メソッドを定義していないことに注意してください。 Pythonでは、これは親メソッド、 wx.Appを意味します。 ()は、オブジェクトの作成時に自動的に呼び出されます。この は良いことです。あなたが忘れてしまった場合

class App(wx.App): 
    def __init__(self): 
     # Call the base class constructor. 
     wx.App.__init__(self) 
     # Do something here... 

:あなたがあなた自身ののinit()メソッドを定義する場合、 はこのように、基本クラスののinit()を呼び出すことを忘れないでくださいそうすると、wxPythonは初期化されず、あなたのOnInit()メソッドは呼び出されません。