Python 中 isinstance 和 type 的区别
isinstance() 和 type() 在判断对象类型时有什么区别?推荐的用法是什么?
回答
古法程序员
type(obj)返回对象的精确类型,不考虑继承isinstance(obj, cls)检查对象是否是 cls 或其子类的实例
class Animal:
pass
class Dog(Animal):
pass
d = Dog()
print(type(d) == Animal) # False,精确类型是 Dog
print(isinstance(d, Animal)) # True,Dog 是 Animal 的子类
推荐:总是优先使用 isinstance(),因为它支持继承关系和多类型检查。
# 多类型检查
isinstance(x, (int, float, complex)) # x 是数字类型
isinstance(s, str)
isinstance(lst, (list, tuple, set))
type() 适合需要精确类型匹配的场景,如 type(obj) is int。