help with class
Arnaud Delobelle
arnodel at googlemail.com
Wed Nov 26 17:08:17 EST 2008
tekion <tekion at gmail.com> writes:
> Hello,
> I am playing with class. Below is the code snippet:
> #!/usr/bin/python
> 2
> 3 class test_class:
> 4 #import gzip
> 5 def __init__(self,file):
> 6 self.file = file
> 7 def open_file(self):
> 8 try:
> 9 print "file: %s" % self.file
> 10 self.xml_file = gzip.GzipFile(self.file,'r')
> 11 except:
> 12 print "an exception has occured"
> 13 for line in self.xml_file:
> 14 print "line: %s" % line
> 15 self.xml_file.close()
> 16
> 17
> 18 if __name__ == '__main__':
> 19 import gzip
> 20 import sys
> 21 t = test_class( sys.argv[1] )
> 22 t.open_file()
>
> My question are:
> 1. Why do I need to use "import gzip" on main section to get it the
> script to work? I would assume you need the import of gzip in the
> class section.
This is how Python works. Here is the relevant extract from the
Reference Manual:
A scope defines the visibility of a name within a block. If a local
variable is defined in a block, its scope includes that block. If
the definition occurs in a function block, the scope extends to any
blocks contained within the defining one, unless a contained block
introduces a different binding for the name. The scope of names
defined in a class block is limited to the class block; it does not
extend to the code blocks of methods – this includes generator
expressions since they are implemented using a function scope.
(Quoted from http://docs.python.org/reference/executionmodel.html)
> 2. What is the proper way of using module in a class you are creating?
import it into the global namespace of the module in which you are
defining your class.
--
Arnaud
More information about the Python-list
mailing list