[Python-3000] Implementations: A syntax for extending method dispatching beyond type/class inheritance

Bill Janssen janssen at parc.com
Thu Dec 7 17:25:26 CET 2006


Dave, thanks.

> To me, even if Car happens to represent a dict by being able to be used 
> as a dict, the expression of this fact feels better expressed as merely 
> implementing dict.
> 
> compare:
> 
> class Car(dict):	# car... is a dict? hmm, a bad ring to it
> 	...
> 
> class Car:
> 	implements dict	# oh, Cars can be used like a dict, got it
> 	...

OK, I guess the difference is that, for me, (1) this doesn't happen a
lot (ever?), and (2) I don't feel that the nuance here is important
enough to add another mechanism to the language which needs to be
supported.  I'd rather just use type inheritance.

> Without something like an implements declaration, if I ever 
> want to express a relationship to another class, but with different 
> internals, I am forced to first define an abstract class and then 
> inherit from that.  With an implements declaration, I can say implements 
> dict and be free of inheriting any of its internal implementation.

That's why it's important for Python to have a clear set of base
interface types for people to use.

> In the syntax sketch, an Implementation is basically a list of 
> types/class, methods, and other Implementation lists.

That sounds a whole lot like a Python 2.5 class, to me.

Bill


More information about the Python-3000 mailing list