用于标识类型的hasattr()选项的Python参考

M J*_*M J 1 python reference hasattr

是否有一个很好的一站式Python参考,用于选择与hasattr()一起使用的属性来识别类型.

例如,以下是针对不是字符串的序列:

def is_sequence(arg):
    return (not hasattr(arg, "strip") and
            hasattr(arg, "__getitem__") or
            hasattr(arg, "__iter__")) 
Run Code Online (Sandbox Code Playgroud)

如果能够快速选择最佳模式,那将是一个很好的参考.

eca*_*mur 5

使用虚拟子已经被你的书面集合模块(collections.abc在Python 3.3).

要检查某些内容是否为非字符串序列,请使用

from collections import Sequence    # collections.abc in Python 3.3
isinstance(arg, Sequence) and not isinstance(arg, basestring)    # str in Python 3
Run Code Online (Sandbox Code Playgroud)

  • @majgis该建议早于虚拟子类的存在.请注意,*most*Pythonic代码仍然倾向于使用`try` /`except`. (3认同)