Pregunta

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.

¿Fue útil?

Solución

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

Otros consejos

Use the appropriate abstract base class:

import collections
isinstance([], collections.Sequence) # ==> true
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top