isinstance(object,type) in python

11

我正在查看一些Python帮助文档,遇到了以下代码:

isinstance(object, type)

能有人解释一下上述语句中的 type 是什么意思吗?

谢谢,
Vineel


它是具体代码示例的一部分,还是更像伪代码(例如签名)?或者更好的方法是展示上下文。不幸的是,这个片段对于两者都有意义。 - user395760
4个回答

14

type 必须是表示类型/类的对象,例如 intstr。例如,isinstance(1, int) 的结果为 True,而 isinstance(sys.stdin, str) 的结果为 False。如果你定义了一个 class Foo,那么 Foo 也是一个类型对象。

编辑:正如 @delnan 所指出的那样,type 本身也是 Python 中的一种类型,因此 isinstance(str, type) 是真的,因为 str 是一种类型,而 isinstance('foo', type) 是假的。在 Python 中,object 也是一种类型,并且是类型层次结构的根。


1

isinstance(对象, 类型)
对象 - 待检查的对象
类型 - 类、类型或类和类型的元组

isinstance() 返回:
如果对象是类的实例或子类,或者元组中的任何一个元素,则返回True
否则返回False
例如:a = 1 + 2j

print(isinstance(1+2j, complex))
output : True

1
请编辑您的答案,确保其中的内容是代码还是解释。 - user9455968

0
isinstance(object, classinfo)

如果对象参数是类信息参数的实例,或者是其(直接、间接或虚拟)子类的实例,则返回true。如果classinfo是类型对象(新式类),并且object是该类型或其(直接、间接或虚拟)子类的对象,则也返回true。如果object既不是类实例也不是给定类型的对象,则该函数始终返回false。如果classinfo既不是类对象也不是类型对象,则它可以是类或类型对象的元组,或者可以递归包含其他这样的元组(不接受其他序列类型)。如果classinfo不是类、类型和这样的元组的类、类型或元组,则会引发TypeError异常。
版本2.2中的更改:添加了对类型信息元组的支持。
摘自:http://docs.python.org/library/functions.html#isinstance

所有可能的classinfos列表在哪里? - oldboy

0

这个语句检查object是否具有type的类型。 type变量应该是一个类。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接