try:
iterator = iter(theElement)
except TypeError:
# not iterable
else:
# iterable
# for obj in iterator:
# pass
Используйте базовые классы Абстрактные базовые классы . Они нуждаются хотя бы в Python 2.6 и работают только для классов нового стиля.
import collections
if isinstance(theElement, collections.Iterable):
# iterable
else:
# not iterable
Однако iter()
является немного более надежным, как описано в документации :
Проверка
blockquote>isinstance(obj, Iterable)
обнаруживает классы, зарегистрированные как Iterable или имеющие метод__iter__()
, но не обнаруживает классы, которые повторяются с помощью метода__getitem__()
. Единственным надежным способом определить, является ли объект итерируемым, является вызовiter(obj)
.