Mike wrote:

I should've mentioned I want StdoutLog to subclass the 'file' type
because I need all the file attributes available.

You might use a surrogate pattern. Here's one I use for this kind of situation, where I want to subclass but that can't be done for some reason.


class SurrogateNotInitedError(exceptions.AttributeError):
    pass

class Surrogate(object):
    def __init__(self, data):
        self._data = data

    def __getattr__(self, name):
        if name == "_data":
            raise SurrogateNotInitedError, name
        else:
            try:
                return getattr(self._data, name)
            except SurrogateNotInitedError:
                raise SurrogateNotInitedError, name

I'll leave it as an exercise to the reader to make this work when self._data is actually a list of objects instead of a single object. You'll obviously need special logic for different methods, like write(), since for some of them you will want to call every object in self._data, and others only a single object.
--
Michael Hoffman
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to