且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Python子类判断issubclass和实例判断isinstance

更新时间:2022-05-19 05:04:59

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