在Python中检查类型的规范方法是什么?
如何检查对象是否属于给定类型,或者它是否继承自给定类型?
如何检查对象是否为类型?o
str
如何检查对象是否属于给定类型,或者它是否继承自给定类型?
如何检查对象是否为类型?o
str
使用 isinstance
检查 是否为 的实例或以下任何子类:o
str
str
if isinstance(o, str):
要检查 的类型是否正好,不包括 str
的子类:o
str
if type(o) is str:
上述内容的另一种替代方案:
if issubclass(type(o), str):
有关相关信息,请参阅 Python 库参考中的内置函数。
对于Python 2,这是检查是否是字符串的更好方法:o
if isinstance(o, basestring):
因为这也会捕获 Unicode 字符串。unicode
不是 的子类 ;然而,两者和都是基弦
的子类。在Python 3中,由于字符串(str
)和二进制数据(字节
)的严格分离而不再存在。str
str
unicode
basestring
或者,接受类的元组。如果 是 以下任何一个子类的任何子类的实例,则将返回:isinstance
True
o
(str, unicode)
if isinstance(o, (str, unicode)):
检查对象类型的最Pythonic方法是...不检查它。
由于Python鼓励鸭子类型化,你应该只使用对象的方法,你想使用它们。因此,如果您的函数正在寻找可写文件对象,请不要检查它是否是 的子类,只需尝试使用其方法即可!try...except
file
.write()
当然,有时这些漂亮的抽象会崩溃,这就是你需要的。但要谨慎使用。isinstance(obj, cls)