使用issubclass()函数的详细指南

438 阅读2分钟

issubclass() 函数检查对象参数 (第一个参数) 是否是 classinfo 类 (第二个参数) 的子类。

Python issubclass

Python issubclass() 是一个内置方法,用于检查一个类是否是另一个类的子类。如果指定的对象是指定对象的子类,issubclass() 函数返回布尔值True,否则返回False。在这个方法中,第一个参数和第二个参数被检查,即第一个参数是否是第二个参数的子类。

语法

issubclass(object, classinfo)

参数

这里有以下参数。

object: 是要检查的

classinfo:是一个,元组,或类的类型。

返回值

Python issubclass() 函数返回两种类型的结果,True 或 False。

如果对象是 classinfo 的一个子类,那么它返回True;否则,它返回False

示例

请看下面的代码例子:

#Creating superclass
class Bank:
	pass

#Creating subclass
class SBI(Bank):
	pass

#Creating sub class of SBI 
class HDFC (SBI):
	pass

#Now we will check subclass with different arguments

#Checking if SBI is subclass of Bank or not
print(issubclass(SBI,Bank))

#Checking if Bank is subclass of SBi or not
print(issubclass(Bank, SBI))

#Checking multilevel subclass
print(issubclass(HDFC, Bank))

#Checking if a class is subclass of itself or not
print(issubclass(HDFC,HDFC))

#checking with an object argument
#Here object is referred to base class always
print(issubclass(Bank, object))

请看输出结果:

True
False
True
True
True

所以,如果作为第一个参数的类是作为第二个参数的另一个类的子类,那么它返回 True,否则,它返回 False。

Python issubclass()与一个类的元组的关系

请看下面的代码:

# app.py

class Top:
    pass


class Middle(Top):
    pass


class Low(Middle):
    pass


print(issubclass(Low, (str, list, Top)))

在上面的例子中,你可以说 Top 是主要的父类,然后它的子类是 Middle,而 Middle 类的子类是 Low。

接下来在打印语句中,我们要检查Low类的类型是一个单一的类的子类还是一个类的元组的子类。请看输出。

➜  pyt python3 app.py
True
➜  pyt

issubclass()和isinstance()的区别

Python isinstance(object, classinfo)检查对象是否是classinfo的一个实例或子类。

而 issubclass(class, classinfo) 检查一个类是否是 classinfo 的一个子类。

Python isinstance() 函数用来检查对象是否是特定类或其任何子类的实例。它需要两个参数。

第一个是一个要测试的对象,第二个是一个单一的类或一个类的元组。它将检查第一个参数,e对象,是否是classinfo的实例。

如果第二个参数是类的元组,它将检查第一个对象是否是该元组中任何一个类的实例。

同样,issubclass()被用来检查该类的类型是否是不同类的子类。第二个参数是一个单一的类或一个类的元组。

本教程就到此为止。

推荐帖子

Python模块

Python dir()