2014-01-09 28 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函數是爲特定類?或者它是另一種類型的構造函數?

請原諒我的無知,因爲我是新手。謝謝。

回答

4

根據wx.App.__init__ documentation

您應該重寫OnInit做applicaition初始化,以確保 的系統,工具包和wxWidgets的完全初始化。

- >OnInit方法僅適用於派生wx.App的類。

1

假設你從「的wxPython在行動」書本 - 好書推薦代碼,

它接着說(我肯定你現在紅本)...

請注意,我們沒有爲我們的應用程序 類定義init()方法。在Python中,這意味着父級方法 wx.App。 init()會在創建對象時自動調用。這 是一件好事。如果你定義自己的初始化()方法,不要 忘記調用初始化()基類的,就像這樣:

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

如果你忘記這樣做,wxPython將不會被初始化,並且您的OnInit()方法將不會被調用。