braver <[EMAIL PROTECTED]> writes:

> On Nov 22, 6:10 pm, "Diez B. Roggisch" <[EMAIL PROTECTED]> wrote:
>> Granted, they aren't part of the stdlib - but then, lots
>> of things aren't.
>
> As Hendrik noticed, I can't even add my own f.eof() if I want to
> have buffering -- is that right?

You can, you just need to inherit from built-in file type.  Then
instances of your class get the __dict__ and with it the ability to
attach arbitrary information to any instance.  For example:

class MyFile(file):
  def __init__(self, *args, **kwds):
    file.__init__(self, *args, **kwds)
    self.eof = False

  def read(self, size=None):
      if size is None:
          val = file.read(self)
          self.eof = True
      else:
          val = file.read(self, size)
          if len(val) < size:
              self.eof = True
      return val

  def readline(self, size=None):
      if size is None:
          val = file.readline(self)
      else:
          val = file.readline(self, size)
      if len(val) == 0:
          self.eof = True
      return val

The code needed to support iteration is left as an excercise for the
reader.
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to