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

2022-09-05 00:52:12

如何检查对象是否属于给定类型,或者它是否继承自给定类型?

如何检查对象是否为类型?ostr


答案 1

使用 isinstance 检查 是否为 的实例或以下任何子类:ostrstr

if isinstance(o, str):

要检查 的类型是否正好,不包括 str 的子类ostr

if type(o) is str:

上述内容的另一种替代方案:

if issubclass(type(o), str):

有关相关信息,请参阅 Python 库参考中的内置函数


在 Python 2 中检查字符串

对于Python 2,这是检查是否是字符串的更好方法:o

if isinstance(o, basestring):

因为这也会捕获 Unicode 字符串。unicode 不是 的子类 ;然而,两者和都是基弦的子类。在Python 3中,由于字符串(str)和二进制数据(字节)的严格分离而不再存在。strstrunicodebasestring

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

if isinstance(o, (str, unicode)):

答案 2

检查对象类型的Pythonic方法是...不检查它。

由于Python鼓励鸭子类型化,你应该只使用对象的方法,你想使用它们。因此,如果您的函数正在寻找可写文件对象,请不要检查它是否是 的子类,只需尝试使用其方法即可!try...exceptfile.write()

当然,有时这些漂亮的抽象会崩溃,这就是你需要的。但要谨慎使用。isinstance(obj, cls)