赞
赏
Python 中的 issubclass 函数用于判断参数 class 是否是类型参数 classinfo 的子类。 issubclass 不仅可以用于内置类型的判断,也可以用于自定义类的判断。
issubclass(class, classinfo)
判断 类 class 是否为类 classinfo 的子类,如果 class 是 classinfo 的子类返回 True,否则返回 False。
issubclass 函数的第二个参数可以是一个 元祖,如果第二个参数是一个元祖,那么只要第一个参数 class 是元祖中类的任何一个类的子类,那么 issubclass 就返回 True。
使用 issubclass 判断内置类型
print("嗨客网(www.haicoder.net)")
print("list issubclass object =", issubclass(list, object))
print("dict issubclass object =", issubclass(dict, object))
print("tuple issubclass list =", issubclass(list, tuple))
程序运行后,控制台输出如下:
我们使用 issubclass 分别判断 list 是否是 object 类的子类,dict 是否是 object 类的子类,结果,都返回了 True,因为所有的类都是 object 类的子类。
最后,我们判断 list 是否是 tuple 类的子类,结果返回了 False,即 list 不是 tuple 类的子类。
使用 issubclass 判断自定义类型
print("嗨客网(www.haicoder.net)")
class Person:
pass
class Student(Person):
pass
class Teacher(Student):
pass
class Cat:
pass
print("Student issubclass Person =", issubclass(Student, Person))
print("Teacher issubclass Person =", issubclass(Teacher, Person))
print("Cat issubclass Person =", issubclass(Cat, Person))
print("Cat issubclass Person =", issubclass(Cat, (Person, object)))
程序运行后,控制台输出如下:
我们分别定义了一个 Person 类、一个 Student 类、一个 Teacher 类和一个 Cat 类,其中,Student 类 继承 了 Person 类,Teacher 类继承了 Student 类,Cat 类没有继承任何类(其实继承了 object 类)。
接着,我们分别使用 issubclass 分别判断 Student 是否是 Person 类的子类,Teacher 是否是 Person 类的子类,结果,都返回了 True,即,它们都直接或间接继承了 Person 类。
最后,我们判断 Cat 是否是 Person 类的子类,结果返回了 False,即 Cat 不是 Person 类的子类,同时,我们使用了 issubclass 判断了 Cat 类是否是 Person 类或者是否是 object 类的子类,结果返回了 True。
即,如果 issubclass 函数的第二个参数是一个元祖,那么只要第一个参数 class 是元祖中类的任何一个类的子类,那么 issubclass 就返回 True。
Python 中的 issubclass 函数用于判断参数 class 是否是类型参数 classinfo 的子类。 issubclass 不仅可以用于内置类型的判断,也可以用于自定义类的判断。