Python 内置函数 isinstance
isinstance()
是 Python 内置函数,用于检查一个对象是否是指定类或类型的实例。它还可以用于检查对象是否属于某个类或其子类,或者是否在某个元组中的类型之一。
语法
isinstance(object, classinfo)
- object: 要检查的对象。
- classinfo: 可以是一个类、类型,或者由类/类型组成的元组。
返回值
- 如果
object
是classinfo
的实例或其子类的实例,返回True
。 - 否则返回
False
。
示例
1. 检查对象是否是某个类的实例
class MyClass:
pass
obj = MyClass()
print(isinstance(obj, MyClass)) # 输出: True
print(isinstance(obj, str)) # 输出: False
2. 检查对象是否是多个类型之一
value = 42
print(isinstance(value, (int, float))) # 输出: True
print(isinstance(value, (str, list))) # 输出: False
3. 检查对象是否是内置类型的实例
num = 3.14
text = "Hello"
print(isinstance(num, float)) # 输出: True
print(isinstance(text, str)) # 输出: True
4. 检查对象是否是子类的实例
class Parent:
pass
class Child(Parent):
pass
obj = Child()
print(isinstance(obj, Parent)) # 输出: True
print(isinstance(obj, Child)) # 输出: True
注意事项
isinstance()
会考虑继承关系。如果对象是子类的实例,检查父类也会返回True
。- 与
type()
不同,isinstance()
更灵活,因为它支持继承和元组类型检查。
isinstance()
与 type()
的区别
class Parent:
pass
class Child(Parent):
pass
obj = Child()
print(isinstance(obj, Parent)) # 输出: True
print(type(obj) == Parent) # 输出: False
isinstance()
会考虑继承关系,而type()
只检查对象的直接类型。
总结
isinstance()
是 Python 中用于类型检查的常用工具,特别适合需要处理继承关系或多类型检查的场景。