Using an object inside a class
Jonno
jonnojohnson at gmail.com
Mon Jan 23 17:45:34 EST 2012
On Mon, Jan 23, 2012 at 4:20 PM, Ian Kelly <ian.g.kelly at gmail.com> wrote:
>
> The App object is created and the wx framework already knows about it.
> It's just not assigned to the app global yet, and the OnInit call has
> not completed yet. See:
>
> Python 2.5 (r25:51908, Sep 19 2006, 09:52:17) [MSC v.1310 32 bit
> (Intel)] on win32
> Type "help", "copyright", "credits" or "license" for more information.
> >>> import wx
> >>> class MyApp(wx.App):
> ... def OnInit(self):
> ... print "wx.GetApp() =", wx.GetApp()
> ... print "app =", app
> ... return True
> ...
> >>> app = MyApp(0)
> wx.GetApp() = <__main__.MyApp; proxy of <Swig Object of type 'wxPyApp
> *' at 0x18d8fc0> >
> app =
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> File "C:\Python25\lib\site-packages\wx-2.8-msw-unicode\wx\_core.py",
> line 7823, in __init__
> self._BootstrapApp()
> File "C:\Python25\lib\site-packages\wx-2.8-msw-unicode\wx\_core.py",
> line 7420, in _BootstrapApp
> return _core_.PyApp__BootstrapApp(*args, **kwargs)
> File "<stdin>", line 4, in OnInit
> NameError: global name 'app' is not defined
>
> I see, so that would get me access to the app instance during init of
Class1 but if I can't access frame or the object as they still aren't
created yet. I can only do that in attributes that I know won't be called
until the app is created.
I'd have to do something like this:
class Class1:
def __init__(self):
self.app = wx.GetApp()
def Method1(self):
self.app.frame.object
This doesn't seem that pythonic. Is there a better way to do what I'm
trying to do? Is there a better way to create my object for example?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20120123/2decb757/attachment-0001.html>
More information about the Python-list
mailing list