[Python-ideas] Object adaptation and interfaces and so forth
talin at acm.org
Mon Apr 23 05:45:29 CEST 2007
Adam Atlas wrote:
> (Not exactly an idea post, but I don't want to bother python-dev or
> python-3000 with this.)
> PEP 246 was rejected a year or so ago, and Guido's rejection note
> stated "Something much better is about to happen; it's too early to
> say exactly what, but it's not going to resemble the proposal in this
> PEP." Does anyone know if anything has gone on with this concept
> since then? It seems like it has a lot of really interesting
> potential, although I do see why PEP 246's specific proposal was
> rejected. It's just the "Something much better is about to happen"
> that got me curious -- is it happening yet? :)
Reminds me of that scene from 2010:
Dave Bowman: You see, something's going to happen. You must leave.
Heywood Floyd: What? What's going to happen?
Dave Bowman: Something wonderful.
Heywood Floyd: What?
Dave Bowman: I understand how you feel. You see, it's all very clear
to me now. The whole thing. It's wonderful.
The answer to your question is "yes", although it's happening in very
small stages. Specifically, Python 3000'a argument decorators and
abstract base classes are laying the groundwork for an adaption system
via generic functions.
Argument decorators make declaring of generic functions much less
cumbersome than was previously possible. And abstract base classes give
the generic functions something to work on that is more general than
merely working on concrete types - it provides a way to reason about
types in a duck-typing world.
What happens next is that there will be various 3rd party
implementations of generic function dispatch which will be based on
those two things. Phillip J. Eby has already stated that he is
interested in creating a kind of reference implementation that
incorporates most of the interesting features, however his need not be
the only one.
These generic function dispatchers, working off of both concrete and
abstract types can be used to implement object adaptation in various
ways (If anyone wants to supply some concrete examples here, please be
More information about the Python-ideas