是否有一个很好的一站式 Python 引用来选择与 hasattr() 一起使用的属性来识别类型。
例如,下面是一个不是字符串的序列:
def is_sequence(arg):
return (not hasattr(arg, "strip") and
hasattr(arg, "__getitem__") or
hasattr(arg, "__iter__"))
如果有可靠的引用可以快速选择最佳模式,那就太好了。
请您参考如下方法:
使用 virtual subclasses已在 collections module 中为您编写(Python 3.3 中的 collections.abc)。
要检查某物是否为非字符串序列,请使用
from collections import Sequence # collections.abc in Python 3.3
isinstance(arg, Sequence) and not isinstance(arg, basestring) # str in Python 3
