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

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to