help with class

r rt8396 at gmail.com
Wed Nov 26 17:13:04 EST 2008


On Nov 26, 4:08 pm, Arnaud Delobelle <arno... at googlemail.com> wrote:
> tekion <tek... 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 fromhttp://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

That's funny...this same question was asked at 11:30 this morning

see thread:
http://groups.google.com/group/comp.lang.python/browse_thread/thread/a42bf1e9504c3c3f?hl=en#



More information about the Python-list mailing list