Python的自省之isinstance&issubclass

Python的自省,是自我反省,自己检查自己的机制。在Python中,有很多方式可以做到让Python自省,这篇文章主要介绍两个isinstanceissubclass

isinstance

isinstance(obj, cls) 用来检查obj对象是否是cls类的对象

1
2
3
4
5
6
7
8
9
10
11
12
class A:
pass

a = A()
print(isinstance(a, A))

i = 10
print(isinstance(i, int))

------------
True
True
1
2
3
4
5
6
7
8
9
10
11
12
13
class A:
pass

class B(A):
pass

b = B()
print(isinstance(b, B))
print(isinstance(b, A))

------------
True
True

补充:也可以是cls的父类

issubclass

issubclass(sub, super) 用来检查sub类是否是 super 类的派生类

1
2
3
4
5
6
7
8
class A:
pass

class B(A):
pass

print(issubclass(B, A)) # B 继承了 A, B是A的子类
print(issubclass(A, B))