在 Python 中检查类型的规范方法是什么?
检查给定对象是否属于给定类型的最佳方法是什么?如何检查对象是否继承自给定类型?
假设我有一个对象o
。我如何检查它是否是一个str
?
-
要检查是否
o
是 的实例str
或任何子类str
,请使用isinstance(这将是“规范”方式):if isinstance(o, str):
检查类型
o
是否准确str
(排除子类):if type(o) is str:
以下方法也有效,并且在某些情况下可能有用:
if issubclass(type(o), str):
有关相关信息,请参阅Python 库参考中的内置函数。
还有一点需要注意:在这种情况下,如果您使用的是 Python 2,您可能实际上想要使用:
if isinstance(o, basestring):
因为这也会捕获 Unicode 字符串(
unicode
不是 的子类str
;两者都是str
的unicode
子类basestring
)。请注意,basestring
在 Python 3 中不再存在字符串 ( ) 和二进制数据 ( )的严格分隔。str
bytes
或者,
isinstance
接受一个类的元组。True
如果o
是以下任何一个子类的实例,这将返回(str, unicode)
:if isinstance(o, (str, unicode)):