Search code examples
pythonreferencehasattr

Python reference for hasattr() choices to identify types


Is there a good one-stop-shop Python reference for choosing attributes to use with hasattr() to identify types.

For example, the following is for a sequence which is not a string:

def is_sequence(arg):
    return (not hasattr(arg, "strip") and
            hasattr(arg, "__getitem__") or
            hasattr(arg, "__iter__")) 

It would be nice to have a solid reference for choosing the best patterns quickly.


Solution

  • Use the virtual subclasses that have already been written for you in the collections module (collections.abc in Python 3.3).

    To check if something is a non-string sequence, use

    from collections import Sequence    # collections.abc in Python 3.3
    isinstance(arg, Sequence) and not isinstance(arg, basestring)    # str in Python 3