Using an object inside a class

Jonno jonnojohnson at gmail.com
Mon Jan 23 16:22:28 EST 2012


On Mon, Jan 23, 2012 at 2:25 PM, Terry Reedy <tjreedy at udel.edu> wrote:

> On 1/23/2012 2:44 PM, Jonno wrote:
>
>> I have a pretty complicated bit of code that I'm trying to convert to
>> more clean OOP.
>>
>> Without getting too heavy into the details I have an object which I am
>> trying to make available inside another class. The reference to the
>> object is rather long and convoluted but what I find is that within my
>> class definition this works:
>>
>> class Class1:
>>     def __init__(self):
>>
>>     def method1(self):
>>          foo.bar.object
>>
>> But this tells me "global name foo is not defined":
>>
>> class Class1:
>>      def __init__(self):
>>            foo.bar.object
>>
>> Obviously I want the object to be available throughout the class (I left
>> out the self.object = etc for simplicity).
>>
>
> Perhaps you left out some relevant details.
>
> I'm sure I did. Part of the reason I'm not posting the whole code is that
I'm trying to teach myself OOP as part of this process. I want to figure
out what is wrong as much as possible by myself. I really appreciate the
pointers and suggestions though.


>
>  Any ideas why I can reference foo inside the method but not in __init__?
>>
>
> References inside functions are resolved when the function is called. So
> purely from what you have presented above, it would seem that 'foo' is
> defined between the call to __init__ and a later call to method1.


I have a strong suspicion that this is what's happening.

Method1 is called on a button push when MainLoop is running so obviously
foo (the main wx.App) exists by then.
I must have somehow be initializing Class1 before foo = MyApp() happens.
Is there a good reference on the order that things happen in python when a
single script is run?

In the meantime here is my stripped down script (foo = app, bar = frame,
object = graph_panel). I'd welcome all suggestions to reorganize it.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20120123/d41bc2c8/attachment-0001.html>


More information about the Python-list mailing list