Oleg Broytmann <phd <at> oper.phd.pp.ru> writes:

> On Tue, May 09, 2006 at 10:31:02PM +0200, tomer filiba wrote:
> > i.e., "is the object addable?" == "hasattr(obj, '__add__')".
> 
>    Even this is meaningless: '1'+1. So duck typing is:

I don't think I agree with this interpretation. Someone earlier
gave the example of an instance in which callable() would return
the 'wrong' answer:

   def __call__( self ):
      throw "This is not callable"

My interpretation of this is that a function can claim all it
wants that its not callable, that doesn't make it so. It *is*
callable, it just happens to throw an exception as a result.

The resolution to this is to not think of duck typing as
being something to do with types, but instead having to
do with capabilities. An object with an __add__ method has
the *potential* to be added, and 99% of the time that's all
we really need to know.

Duck typing isn't about wanting a duck, its about wanting
an object that has waddling and quacking capabilities.

-- Talin


_______________________________________________
Python-3000 mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-3000
Unsubscribe: 
http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com

Reply via email to