T. Crane wrote: > "Robert Kern" <[EMAIL PROTECTED]> wrote in message > news:[EMAIL PROTECTED] >> T. Crane wrote: >>> Hi, >>> >>> If I define a class like so: >>> >>> class myClass: >>> import numpy >>> a = 1 >>> b = 2 >>> c = 3 >>> >>> def myFun(self): >>> print a,b,c >>> return numpy.sin(a) >>> >>> >>> I get the error that the global names a,b,c,numpy are not defined. >>> Fairly >>> straightforward. But if I am going to be writing several methods that >>> keep >>> calling the same variables or using the same functions/classes from >>> numpy, >>> for example, do I have to declare and import those things in each method >>> definition? Is there a better way of doing this? >> Put your imports at the module level. I'm not sure what you intended with >> a, b, >> c so let's also put them at the top level. > > If you put them at the top level, and suppose you saved it all in a file > called test.py, then when you type > > ln [1]: from test import myClass > > does it still load a,b,c and numpy into the namespace? > Why does it need to? The functions in module "test" will access that module's namespace, not that of the calling module.
>> import numpy >> a = 1 >> b = 2 >> c = 4 >> >> class myClass: >> def myFun(self): >> print a, b, c >> return numpy.sin(a) >> >> >> OTOH, if a, b, c were supposed to be attached to the class so they could >> be >> overridden in subclasses, or be default values for instances, you can >> leave them >> in the class definition, but access them through "self" or "myClass" >> directly. > > Yeah, they don't need to be accessed anywhere other than within the class > itself and I won't need to overwrite them, so I'll try just putting them in > the top level. > That should work regards Steve -- Steve Holden +1 571 484 6266 +1 800 494 3119 Holden Web LLC/Ltd http://www.holdenweb.com Skype: holdenweb http://del.icio.us/steve.holden ------------------ Asciimercial --------------------- Get on the web: Blog, lens and tag your way to fame!! holdenweb.blogspot.com squidoo.com/pythonology tagged items: del.icio.us/steve.holden/python All these services currently offer free registration! -------------- Thank You for Reading ---------------- -- http://mail.python.org/mailman/listinfo/python-list