duck-type-checking?

Terry Reedy tjreedy at udel.edu
Wed Nov 12 13:35:23 EST 2008


Cristina Yenyxe González García wrote:
> 2008/11/12 Joe Strout <joe at strout.net>:
>> So I need functions to assert that a given identifier quacks like a string,
>> or a number, or a sequence, or a mutable sequence, or a certain class, or so
>> on.  (On the class check: I know about isinstance, but that's contrary to
>> duck-typing -- what I would want that check to do instead is verify that
>> whatever object I have, it has the same public (non-underscore) methods as
>> the class I'm claiming.)
>>
>> Are there any standard methods or idioms for doing that?
> 
> You can use hasattr(object, name), with 'name' as the name of the
> public method to check. It returns True if the object responds to that
> method, False otherwise.

Too hard. For methods, which are what define duck species, and any 
attribute guaranteed to not be null, "assert ob.name" is equivalent to 
"assert hasattr(ob, 'name')".

tjr




More information about the Python-list mailing list