如何检查对象是否属于给定类型,或者它是否继承自给定类型?
如何检查对象 o
是否属于 str
类型?
初学者经常错误地认为字符串 _已经是_“一个数字”——或者期望 Python 3.x input
来转换类型,或者期望像 '1'
这样的字符串 同时也是 一个整数。对于这些问题,这是错误的规范。请仔细阅读问题,然后使用 如何检查字符串是否代表数字(浮点数或整数)? , 如何将输入读取为数字? 和/或 要求用户输入,直到他们给出适当的有效响应。
原文由 Herge 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用
isinstance
检查o
是否是str
或任何子类的实例 ---str
检查
o
的类型是否正好是str
, _不包括str
的子类_:上述的另一种选择:
有关相关信息,请参阅 Python 库参考中的 内置函数。
在 Python 2 中检查字符串
对于 Python 2,这是检查
o
是否为字符串的更好方法:因为这也会捕获 Unicode 字符串。
unicode
不是str
的子类;而str
和unicode
都是basestring
的子类。在 Python 3 中,basestring
不再存在,因为字符串(str
)和二进制数据(bytes
) 是严格分开 的。或者,
isinstance
接受一个类的元组。这将返回True
如果o
是任何(str, unicode)
的任何子类的实例: