[Python-3000] Abilities / Interfaces

Phillip J. Eby pje at telecommunity.com
Wed Nov 22 18:12:16 CET 2006


At 11:41 AM 11/22/2006 -0500, Andrew Koenig wrote:
> > What does it add to have to declare a class as being "Iterable", if it
> > already implements __iter__?  What does the notion of "Iterable" add to
> > the execution *or* understanding of the code?
>
>Let's suppose for the sake of argument that declaring a class as being
>"Iterable" adds nothing.  What does that say about whether the ability to
>declare other abilities is useful?  I think it doesn't say much.

I submit that every other ability can be similarly defined, because the 
code to *implement* that ability must exist in one of three places:

1. a method of the object
2. a method of an adapter
3. a method registered somewhere, e.g. with a generic function

Neither #1 nor #3 require a separate interface declaration, and #2 can be 
subsumed into an adaptation generic function -- which is actually what 
iter() does, anyway.

Note that all three cases offer potential for directly verifying 
implementation of the ability, whereas *declaring* an ability merely adds a 
distinct *claim* that it has been implemented -- which then may need to be 
separately verified.



More information about the Python-3000 mailing list