Вопрос

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.

Это было полезно?

Решение

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

Другие советы

Use the appropriate abstract base class:

import collections
isinstance([], collections.Sequence) # ==> true
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top