> > I'd like to be able to do something like this: > > class SuperCursor(FeatureOneMixIn, FeatureTwoMixin, ..., > > VanillaCursor): pass > > Why does it have to look like that? A good programmer lets the code > look however it has to look to most effectively do it's job. > > With a proxy, the "base class" isn't a base class but a member. Here > is a very simple example: > > class SuperCursor(object): > def __init__(self): > self._cursor = VanillaCursor() > self._connected = False > def __getattr__(self,attr): > if not self._connected: > self._cursor.connect() > self._connected = True > return getattr(self._cursor,attr) > > cursor = SuperCursor() > > That doesn't use a mixin, but why should it?
The point of using a mixin is to not limit myself to inheriting from VanillaCursor. I want to put this on top of various subclasses of the vanilla cursor, like TimeLimitedCursor or RetryingCursor. I have four other mixins that operate this way, so it's desirable to keep this one in line with that. -- http://mail.python.org/mailman/listinfo/python-list