我正在学习wxPython。在其中一个示例中,代码如下:
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
函数是针对特定类的吗?或者它是另一种类型的构造函数?
请原谅我的无知,因为我是新手。感谢。
答案 0 :(得分:4)
根据wx.App.__init__
documentation:
您应该覆盖
OnInit
以执行应用程序初始化以确保 系统,工具包和wxWidgets已完全初始化。
- > OnInit
方法仅适用于派生wx.App
的类。
答案 1 :(得分:1)
假设你从" wxPython in Action"获得了代码。书 - 好书会推荐,
接着说(我相信你现在已经把它变红了)......
请注意,我们没有为应用程序定义 init ()方法 类。在Python中,这意味着父方法, wx.App。 init (),在对象创建时自动调用。这个 是一件好事。如果您定义自己的 init ()方法,请不要 忘记调用基类的 init (),如下所示:
class App(wx.App):
def __init__(self):
# Call the base class constructor.
wx.App.__init__(self)
# Do something here...
如果你忘记这样做,wxPython将不会被初始化,你的OnInit()方法也不会被调用。