[Python-Dev] Need a way to test for 8-bit-or-unicode-string

Barry A. Warsaw barry@zope.com
Fri, 5 Oct 2001 11:27:01 -0400


    GvR> if isinstance(x, str) or isinstance(x, unicode): > > is
    GvR> apparently too much typing.

    NS> Perhaps we could extend isinstance().  How about

    NS>     isinstance(x, str, unicode)

    NS> or

    NS>     isinstance(x, (str, unicode))

    NS> This is a common problem not limited to string types.  I often
    NS> want to test if something is a tuple or a list for example.

That's an interesting idea, but please use the former signature, not
the latter.

And what would it return?  It needs to return a true value on success,
but maybe instead of returning 1, it might be more useful to return
the type argument that matched, e.g.:

>>> isinstance('', str, unicode)
<type 'str'>
>>> isinstance(u'', str, unicode)
<type 'unicode'>
>>> isinstance((), list, dictionary, tuple)
<type 'tuple'>
>>> isinstance(7, list, dictionary, tuple)
0

-Barry