Noob Q: subclassing or wrapping file class
Terry Reedy
tjreedy at udel.edu
Wed Sep 16 21:09:12 EDT 2009
kj wrote:
>
> I'm trying to get the hang of Python's OO model, so I set up this
> conceptually simple problem of creating a new file-like class to
> read a certain type of file. The data in this type of file consists
> of multiline "chunks" separated by lines consisting of a single
> ".".
>
> My first crack at it looks like this:
>
> class MyFile():
> def __init__(self, f):
> if hasattr(f, 'next'):
> self.fh = f
> else:
> self.fh = file(f, 'r')
I believe open(f, 'r') does the same thing. In 3.x, 'file' is gone and
you must use 'open', so you might want to start using it now.
>
> def __iter__(self):
> return self
>
> def next(self):
> buf = []
> for line in self.fh:
> if line == '.\n':
> break
> buf.append(line)
> if len(buf) == 0:
> raise StopIteration
> return buf
FYI, what you have written to this point is an iterator class that could
be rewritten as a generator function. You might fine that an instructive
exercise.
Terry Jan Reedy
More information about the Python-list
mailing list