【Python】isinstance

目录

【Python】isinstance

参数说明:

返回值:

常见用法示例:

1. 检查对象是否是某个类的实例

2. 检查对象是否是多个类中的某一个类的实例

3. 与类型检查结合使用

4. 使用 isinstance() 来处理多态

总结:


【Python】isinstance

isinstance() 是 Python 内置的一个函数,用于检查一个对象是否是某个特定类或其子类的实例。它的语法如下:

isinstance(object, classinfo)

参数说明:

  • object:要检查的对象。
  • classinfo:可以是一个类或者一个类元组(即多个类的元组)。如果 classinfo 是一个元组,那么 object 必须是其中任何一个类的实例。

返回值:

  • 如果 objectclassinfo 指定的类或其子类的实例,返回 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() 支持继承关系的检查,能够更灵活地处理面向对象编程中的多态性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

资源存储库

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值