📜  python中的isinstance(1)

📅  最后修改于: 2023-12-03 14:46:37.940000             🧑  作者: Mango

Python中的isinstance

在Python中,isinstance() 是一个内置函数,用于判断一个对象是否是另一个类或其派生类的实例。

isinstance() 的语法如下所示:

isinstance(object, classinfo)

其中,两个参数的含义如下:

  • object:需要判断的对象
  • classinfo:类名或类型的元组

使用 isinstance() 可以方便地判断一个对象的类型,实现一些多态的操作。

例如,下面的代码演示了如何使用 isinstance() 判断一个对象的类型:

class Animal:
    pass

class Dog(Animal):
    pass

class Cat(Animal):
    pass

dog = Dog()
cat = Cat()

print(isinstance(dog, Dog))   # True
print(isinstance(cat, Animal))   # True
print(isinstance(dog, Animal))   # True
print(isinstance(cat, Dog))   # False

上述代码定义了三个类 AnimalDogCat

然后,我们创建了一个 Dog 类的实例 dog 和一个 Cat 类的实例 cat

最后,使用 isinstance() 函数分别判断 dogcat 对象的类型,输出判断结果。

类型检查与类型转换

除了用于判断对象的类型,isinstance() 还可以用于类型检查和类型转换。

例如,下面的代码演示了如何使用 isinstance() 进行类型检查和类型转换:

data = ['hello', 123, True]
result = []

for item in data:
    if isinstance(item, str):
        result.append(item.upper())
    elif isinstance(item, int):
        result.append(str(item))
    elif isinstance(item, bool):
        result.append(int(item))

print(result)

上述代码将一个列表 data 中的元素进行类型检查和类型转换,然后将转换后的结果添加到一个新的列表 result 中。具体来说:

  • 如果元素是字符串,就将其转换为大写字母后添加到 result
  • 如果元素是整数,就将其转换为字符串后添加到 result
  • 如果元素是布尔型,就将其转换为整数后添加到 result

最终,输出 result 列表的内容。

总结

isinstance() 是一个非常常用的函数,它可以方便地判断一个对象的类型,进而实现多态的操作。

同时,isinstance() 还可以用于类型检查和类型转换,使得代码更加简洁和可读。