Reputation: 4317
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.
Upvotes: 1
Views: 593
Reputation: 179392
Use the appropriate abstract base class:
import collections
isinstance([], collections.Sequence) # ==> true
Upvotes: 1
Reputation: 157324
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
Upvotes: 5