首页 > 技术文章 > 🍖 isinstance( ) 和 issubclass( ) 方法

songhaixing 2020-12-27 13:00 原文

一. isinstance(obj,cls)

1.isinstance( ) 与 type( )

  • 检查一个对象(obj) 是否是类(cls) 实例出来的
class Foo1:
    def __init__(self):
        self.name = "派大星"

class Foo2:
    def __init__(self):
        self.name = "海绵宝宝"

f1 = Foo1()
f2 = Foo2()

print(isinstance(f1,Foo1))  # True
print(isinstance(f2,Foo1))  # False
  • type( ) 判断传入对象的类型
print(type([1,2.3]) == list)    # True
print(type(33) is int)          # True
print(type(3.5) in (int,float)) # True

2.不同之处

  • isinstance 它可以判断带有继承关系的类的对象
  • type 只能判断所属类的对象
class Foo1:
    def __init__(self):
        self.name = "派大星"

class Foo2(Foo1):
        name = "海绵宝宝"

f1 = Foo1()
f2 = Foo2()

print(isinstance(f2,Foo2))  # True
print(isinstance(f2,Foo1))  # True

print(type(f2) is Foo2)     # True
print(type(f2) is Foo1)     # False

3.注意

  • 不能说哪一种方法更好, 只能说哪一个更合适

二. issubclass(sub,super)

  • 检查sub类是否是super类的派生类(孙子类, 重孙子类...)

推荐阅读