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

56 浏览
0 Comments

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

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

我该如何检查对象o是否为类型str


初学者经常错误地期望字符串已经是“数字”,要么期望 Python 3.x 的input转换类型,要么期望像\'1\'这样的字符串同时也是整数。这对于这些问题是错误的规范。请仔细阅读问题,然后根据需要使用如何检查字符串是否表示数字(浮点数或整数)?如何将输入读取为数字? 和/或 要求用户输入,直到他们给出有效响应

admin 更改状态以发布 2023年5月23日
0
0 Comments

检查对象类型的最Pythonic的方式是……不去检查它。

由于Python鼓励鸭子类型,你只需要使用 try...except 来使用对象的方法,以你想要使用的方式。因此,如果你的函数正在寻找一个可写文件对象,不要检查它是否是 file 的子类,只需尝试使用它的 .write() 方法!

当然,有时这些漂亮的抽象会失效,需要使用 isinstance(obj, cls)。但请谨慎使用。

0
0 Comments

使用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的子类;strunicode都是basestring的子类。在Python 3中,由于字符串(str)和二进制数据(bytes)严格分离,因此basestring不再存在。

或者,isinstance接受一个类的元组。如果o(str, unicode)任意子类的实例之一,这将返回True

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

0