[Chicago] duck typing to handle a string or iterable of strings

Carl Meyer carl at oddbird.net
Fri May 20 05:34:34 CEST 2011


On 05/19/2011 10:13 PM, Jesse London wrote:
> It sounds like what you really care about is whether or not you were
> handed an iterable. If you don't want to say:
> 
>     def foo(*strings):
>         ...
> 
> then you can reliably duck-type like so:
> 
>     def foo(strings):
>         if not hasattr(strings, '__iter__'):
>             strings = (strings,)
>         ...

Not in Python 3, FWIW. Since strings are an iterable, it was really only
ever an oversight that they lacked __iter__, and that was fixed in Python 3.

Carl


More information about the Chicago mailing list