1、继承关系

# -*- coding: utf-8 -*-


class Animal(object):
pass


class Cat(Animal):
pass


class Dog(Animal):
pass


cat = Cat()

2、子类判断

​issubclass(x, A_tuple)​

print(issubclass(Cat, Animal))  # True
print(issubclass(Cat, Dog)) # False

# 两种方式等价
print(issubclass(Cat, (Animal, Dog))) # True
print(issubclass(Cat, Animal) or issubclass(Cat, Dog)) # True

3、实例判断

​isinstance(x, A_tuple)​

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

# 两种方式等价
print(isinstance(cat, (Cat, Dog))) # True
print(isinstance(cat, Cat) or isinstance(cat, Dog)) # True

4、获取类的子类

# -*- coding: utf-8 -*-


class A(object):
pass


class B(A):
pass


class C(A):
pass


for clazz in A.__subclasses__():
print(clazz.__name__)
# B C