Ritesh Raj Sarraf wrote:
Hi,
I have a class defined in a file called foo.py
In bar.py I've imported foo.py
In bar.py's main function, I instantiate the class as follows:
log = foo.log(x, y, z)
Now in main I'm able to use log.view(), log.error() et cetera.
Correct. Because, having instantiated the class and retained a reference
to the instance, the methods of the instance are available relative to
the name containing the reference.
But when I call the same method from some functions which are in
bar.py, it fails giving me the following error:
NameError: global name 'log' is not defined
Well, that's preumbaly because your
log = foo.log(x, y, z)
statement was inside a function, and so the name "foo" was created in
that function's local namespace rather than in the module's global
namespace.
1) I tried lookng into the docs but couldn't find anything on instance
scope.
2) How is such situation tackled ? Will I have to instantiate in every
function ?
The best thing to do would be to pass the instance in as an argument to
the functions that need to manipulate it.
regards
Steve
--
Steve Holden +44 150 684 7255 +1 800 494 3119
Holden Web LLC/Ltd
http://www.holdenweb.com
Skype: holdenweb
http://holdenweb.blogspot.com
Recent Ramblings
http://del.icio.us/steve.holden