[Python-3000] Abilities / Interfaces
Guido van Rossum
guido at python.org
Wed Nov 22 16:08:21 CET 2006
On 11/22/06, Walter Dörwald <walter at livinglogic.de> wrote:
> Another effect of __special__ methods is that they divide the class
> namespace into two parts: The __special__ names are those that have to
> be implemented to support core Python interfaces, and the methods
> without underscores are those that implement the "main aspect" of the
> class.
Well, there are plenty of examples of __special__ methods for other
purposes than core Python interfaces, and plenty of core Python
interfaces that don't use __special__ (dict.get(), list.append(),
iter.next(), str.lower(), you get the idea.)
The *original* idea was for __special__ names to apply to anything
that wasn't invoked using regular method notation: x+y, a[i],
o.foobar, f(args), len(a), that sort of thing. By extension or
expedience it also became used for meta-data (e.g. Zope's
__implements__) and for generic functions like pickling (__reduce__).
They do have the downside that there's only one __special__ namespace.
But that can be mitigated by using naming conventions. IMO it remains
to be seen whether there will be too many generic functions to make
this work sensibly.
--
--Guido van Rossum (home page: http://www.python.org/~guido/)
More information about the Python-3000
mailing list