一尘不染

在Python中检查类型的规范方法是什么?

python

检查给定对象是否为给定类型的最佳方法是什么?如何检查对象是否从给定类型继承?

假设我有一个对象o。如何检查是否是str


阅读 474

收藏
2020-02-10

共1个答案

一尘不染

要检查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,这两个strunicode是的子类basestring)。请注意,basestring在Python 3中不再存在,在Python 3中,字符串()和二进制数据()严格分开。strbytes

或者,isinstance接受一个类的元组。True如果o是以下任何一个的任何子类的实例,则将返回(str, unicode):

if isinstance(o, (str, unicode)):
2020-02-10