bukzor a écrit :
so unfortunately I think I need to use __getattribute__
to do this. I'm doing all this just to make the connection not
actually connect until used.
I may be dumb, but I don't get how this is supposed to solve your
problem. But anyway : there's a known design pattern for what you're
trying to do, that doesn't require mixins nor messing with
__getattribute__ (which, I repeat, is more often than not something you
*don't* want to do). The name of the design pattern is "proxy". I
strongly suggest that you 1/ try to cure the real problem instead of
hacking around and 2/ read about the proxy design pattern.
My 2 cents...
I like the idea of mix-ins, but can't figure out how to make a proxy
work that way.
You mean, "how to use a proxy for lazy initialization" ? Heck, that's
the exact use case in the GoF.
I mean, "how to make a MixIn class that uses the proxy pattern".
That's not how proxies work. They use composition/delegation, not MI.
I'd
like to be able to do something like this:
class SuperCursor(FeatureOneMixIn, FeatureTwoMixin, ...,
VanillaCursor): pass
Yuck.
Sorry, but it reminds me of the worst MI abuses in Zope2.
(snip)
My toy example turned out to be not the best representation of the
problem.
This is often the case with toy examples.
The base class has attributes that "exist" but either throw errors or
segfault
if used before reconnect() is called.
Then these attributes should probably call reconnect() by themselves.
Decorators and/or computed attributes may help here.
--
http://mail.python.org/mailman/listinfo/python-list