[Python-3000] Adaption & generic functions [was Generic functions]

Eli Stevens (WG.c) listsub at wickedgrey.com
Fri Apr 7 21:58:46 CEST 2006


Guido van Rossum wrote:
> On 4/7/06, Walter Dörwald <walter at livinglogic.de> wrote:
>> An Interface is an abstract class that you subclass to make it a
>> concrete implementation.
> 
> That's not the view of most people who use the word interface these
> days. Not in Zope (see Fred Drake's post), not in Java.
> 
>> If you have an adapter that adapts to the
>> FooInterface why shouldn't it return a FooInterface object?
> 
> Because implementing an interface and extending a class are separate concepts.
> 
> Did you forget duck typing? Something can be a sequence without
> subclassing a common base class.

</lurk>

I'm curious what effect overloaded functions will have on duck typing; a 
Something can act like a list, but from my understanding of the 
discussion* it won't end up matching:

@pprint.register(list)
def pprint_list(obj):
     pass

It seems to me that now to get a duck-typed list, not only do you have 
to implement all of special methods that define "listy-ness," you also 
have to find the overloaded functions that are specialized for lists, 
and register your own implementation (or an implementation specialized 
for lists, if appropriate).

If a consumer of your listy class is also a consumer of some separate 
overloaded functions that operate on lists, will they be responsible for 
registering your listy class into the overloaded functions?  How does 
that work when the overloaded functions are an implementation detail of 
the other library they happen to use?

I think there's a lot of interesting potential here; but the reliance on 
object type seems to imply that you can't mix it with duck typing, and 
I'm not sure if that's being fully considered.

Eli

* - I haven't been able to read all of the posts on this topic, but I've 
tried to skim the threads as deeply as I'm able.  Sorry if this has been 
brought up already.

<lurk>



More information about the Python-3000 mailing list