Python issubclass和isinstance函数:检查类型
在Python中,issubclass 和 isinstance 是两个用于检查类型关系的内置函数。它们的主要区别在于检查的对象类型不同:
issubclass(class, classinfo):
用途:检查一个类是否是另一个类的子类(或是否实现了某个接口)。
参数:
class:要检查的类。
classinfo:可以是单个类或者一个包含类的元组,用于检查class是否是这些类的子类。
返回值:如果class是classinfo的子类(或相同类),则返回True;否则返回False。
示例:
class A:
pass
class B(A):
pass
print(issubclass(B, A)) # 输出: True
print(issubclass(A, B)) # 输出: False
print(issubclass(B, B)) # 输出: True
print(issubclass(B, (A, int))) # 输出: True,因为B是A的子类
isinstance(object, classinfo):
用途:检查一个对象是否是某个类的实例或者是否是某个类的子类的实例。
参数:
object:要检查的对象。
classinfo:可以是单个类或者一个包含类的元组,用于检查object是否是这些类的实例。
返回值:如果object是classinfo的实例(或子类实例),则返回True;否则返回False。
示例:
class A:
pass
class B(A):
pass
obj_a = A()
obj_b = B()
print(isinstance(obj_a, A)) # 输出: True
print(isinstance(obj_b, A)) # 输出: True,因为obj_b是A的子类B的实例
print(isinstance(obj_b, B)) # 输出: True
print(isinstance(obj_a, (A, B))) # 输出: True,因为obj_a是A的实例
print(isinstance(obj_b, (A, int))) # 输出: True,因为obj_b是A的子类B的实例
注意事项
issubclass 只能用于类对象,不能用于实例对象。
isinstance 可以用于实例对象和类对象(在用于类对象时,相当于检查该类是否是给定类的子类)。
示例对比
class Animal:
pass
class Dog(Animal):
pass
dog = Dog()
# 使用 issubclass
print(issubclass(Dog, Animal)) # True
print(issubclass(Animal, Dog)) # False
# 使用 isinstance
print(isinstance(dog, Dog)) # True
print(isinstance(dog, Animal)) # True
print(isinstance(Dog, Animal)) # True,这里检查的是类对象,因为Dog是Animal的子类
这两个函数在面向对象编程中非常有用,特别是在需要确保对象类型符合特定要求时。
原文地址:https://blog.csdn.net/m0_65482549/article/details/143804768
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!