Python isinstance函数

Python isinstance函数教程

Python 中的 isinstance 函数用于判断一个 对象 是否是某种类型。 isinstance 不仅可以用于内置类型的判断,也可以用于自定义 的判断。

Python isinstance函数详解

语法

isinstance(object, classinfo)

说明

判断实例 object 是否为类 classinfo 的类型,如果 object 是 classinfo 的类型返回 True,否则返回 False。

isinstance 函数的第二个参数可以是一个 元祖,如果第二个参数是一个元祖,那么只要第一个参数 object 是元祖中类的任何一个类型,那么 isinstance 就返回 True。

案例

isinstance判断内置类型

使用 isinstance 判断内置类型

print("嗨客网(www.haicoder.net)") name = "HaiCoder" age = 109 score = 99.98 print("name isinstance str =", isinstance(name, str)) print("age isinstance int =", isinstance(age, int)) print("score isinstance float =", isinstance(score, float)) print("age isinstance str =", isinstance(age, str))

程序运行后,控制台输出如下:

115_python isinstance方法.png

首先,我们定义了三个 变量,一个 string 类型的 name,一个 int 类型的 age,和一个 float 类型的 score。

接着,我们分别使用 isinstance 分别判断 name 是否是 str 类的子类,age 是否是 int 类的子类,score 是否是 float 类的子类,结果,都返回了 True。

最后,我们判断 age 是否是 str 类的子类,结果返回了 False,即 age 不是 str 类的子类。

isinstance判断自定义类型

使用 isinstance 判断自定义类型

print("嗨客网(www.haicoder.net)") class Person: pass class Student(Person): pass class Teacher(Student): pass class Cat: pass person = Person() student = Student() teacher = Teacher() cat = Cat() print("student isinstance Person =", isinstance(student, Person)) print("teacher isinstance Person =", isinstance(teacher, Person)) print("cat isinstance Person =", isinstance(cat, Person)) print("cat isinstance Person =", isinstance(cat, (Person, object)))

程序运行后,控制台输出如下:

116_python isinstance方法.png

我们分别定义了一个 Person 类、一个 Student 类、一个 Teacher 类和一个 Cat 类,其中,Student 类 继承 了 Person 类,Teacher 类继承了 Student 类,Cat 类没有继承任何类(其实继承了 object 类)。

接着,我们分别实例化了四个对象,并分别使用 isinstance 判断 student 对象是否是 Person 类的实例,teacher 实例是否是 Person 类的实例,结果,都返回了 True,即,它们都直接或间接继承了 Person 类。

最后,我们判断 cat 实例是否是 Person 类的实例,结果返回了 False,即 Cat 不是 Person 类的实例,同时,我们使用了 isinstance 判断了 cat 实例是否是 Person 类或者是否是 object 类的实例,结果返回了 True。

即,如果 isinstance 函数的第二个参数是一个元祖,那么只要第一个参数是元祖中类的任何一个类的实例,那么 isinstance 就返回 True。

Python isinstance函数总结

Python 中的 isinstance 函数用于判断一个对象是否是某种类型。 isinstance 不仅可以用于内置类型的判断,也可以用于自定义类的判断。