目录
【Python】isinstance
isinstance() 是 Python 内置的一个函数,用于检查一个对象是否是某个特定类或其子类的实例。它的语法如下:
isinstance(object, classinfo)
参数说明:
object:要检查的对象。classinfo:可以是一个类或者一个类元组(即多个类的元组)。如果classinfo是一个元组,那么object必须是其中任何一个类的实例。
返回值:
- 如果
object是classinfo指定的类或其子类的实例,返回True。 - 否则,返回
False。
常见用法示例:
1. 检查对象是否是某个类的实例
class Animal:
pass
class Dog(Animal):
pass
dog = Dog()
# 检查 dog 是否是 Dog 类的实例
print(isinstance(dog, Dog)) # 输出: True
# 检查 dog 是否是 Animal 类的实例(由于 Dog 继承了 Animal)
print(isinstance(dog, Animal)) # 输出: True
# 检查 dog 是否是某个不相关的类的实例
print(isinstance(dog, str)) # 输出: False
2. 检查对象是否是多个类中的某一个类的实例
classinfo 可以是一个类元组,isinstance() 会检查 object 是否是元组中任何一个类的实例。
class Animal:
pass
class Dog(Animal):
pass
class Cat(Animal):
pass
dog = Dog()
# 检查 dog 是否是 Dog 或 Cat 类的实例
print(isinstance(dog, (Dog, Cat))) # 输出: True
# 检查 dog 是否是 Cat 或 str 类的实例
print(isinstance(dog, (Cat, str))) # 输出: False
3. 与类型检查结合使用
isinstance() 经常用来替代 type(),因为 isinstance() 不仅能检查对象是否是特定类的实例,还能检查是否是该类的子类实例。
class Animal:
pass
class Dog(Animal):
pass
dog = Dog()
# 使用 isinstance() 检查对象类型
print(isinstance(dog, Animal)) # 输出: True
print(isinstance(dog, Dog)) # 输出: True
print(isinstance(dog, object)) # 输出: True,因为所有类都继承自 object 类
4. 使用 isinstance() 来处理多态
在面向对象编程中,isinstance() 可用于处理多态行为,允许你检查一个对象是否支持某种接口或特定行为。
class Shape:
def draw(self):
pass
class Circle(Shape):
def draw(self):
print("Drawing Circle")
class Square(Shape):
def draw(self):
print("Drawing Square")
def draw_shape(shape):
if isinstance(shape, Shape):
shape.draw()
else:
print("Invalid shape")
circle = Circle()
square = Square()
draw_shape(circle) # 输出: Drawing Circle
draw_shape(square) # 输出: Drawing Square
assert isinstance(self.algo, str), 'algo must be a string!'
assert isinstance(self.cfgs.train_cfgs.parallel, int), 'parallel must be an integer!'
总结:
isinstance()用于检查对象是否是指定类或其子类的实例。- 它可以用来检查对象的类型,并支持多个类的元组检查。
- 与
type()函数相比,isinstance()支持继承关系的检查,能够更灵活地处理面向对象编程中的多态性。

1420

被折叠的 条评论
为什么被折叠?



