在Python中检查类型的规范方法是什么?
在Python中检查类型的规范方法是什么?
我该如何检查一个对象是否属于给定类型,或者是否继承自给定类型?
我该如何检查对象o
是否为类型str
?
初学者经常错误地期望字符串已经是“数字”,要么期望 Python 3.x 的input
转换类型,要么期望像\'1\'
这样的字符串同时也是整数。这对于这些问题是错误的规范。请仔细阅读问题,然后根据需要使用如何检查字符串是否表示数字(浮点数或整数)?、如何将输入读取为数字? 和/或 要求用户输入,直到他们给出有效响应。
admin 更改状态以发布 2023年5月23日
使用isinstance
来检查o
是否是str
或其任何子类的实例:
if isinstance(o, str):
要检查o
的类型是否确切为str
,不包括str
的子类:
if type(o) is str:
有关信息,请参见Python库参考中的内置函数。
在Python 2中检查字符串
对于Python 2,这是检查o
是否为字符串的更好方法:
if isinstance(o, basestring):
因为这也会捕捉Unicode字符串。unicode
不是str
的子类;str
和unicode
都是basestring
的子类。在Python 3中,由于字符串(str
)和二进制数据(bytes
)严格分离,因此basestring
不再存在。
或者,isinstance
接受一个类的元组。如果o
是(str, unicode)
任意子类的实例之一,这将返回True
:
if isinstance(o, (str, unicode)):