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

简介: Python子类判断issubclass和实例判断isinstance

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


            </div>
目录
相关文章
|
4月前
|
算法 搜索推荐 API
小红书如何养号?怎么算养号成功
从零到千粉:小红书养号实战手册与Python自动化实现 大家好
|
关系型数据库 MySQL Java
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
253 0
|
网络协议 Unix Linux
docker部署Portainer
Portainer可以在Docker上运行,而且部署起来非常简单 Portainer是Docker的图形化管理工具,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录用户管理和控制等功能。功能十分全面,基本能满足中小型单位对容器管理的全部需求
docker部署Portainer
|
Java 数据库连接 mybatis
一文彻底搞懂Mybatis系列(十二)之MyBatis多对一映射延迟加载(association和lazyLoadingEnabled)
一文彻底搞懂Mybatis系列(十二)之MyBatis多对一映射延迟加载(association和lazyLoadingEnabled)
263 0
|
Java Linux Maven
设置 Maven 环境变量
配置 Maven 环境变量涉及 Windows、Linux 和 Mac。在 Windows 上,新建系统变量 `MAVEN_HOME` 指向安装目录,编辑 `Path` 添加 `%MAVEN_HOME%\bin`。Linux 和 Mac 中,解压 Maven,移动到 `/usr/local`,编辑 `/etc/profile`,添加 `MAVEN_HOME` 和 `PATH`,然后执行 `source /etc/profile`。最后通过 `mvn -v` 检查安装是否成功。
|
NoSQL API Redis
Redis
Redis 是一个开源的、支持网络、可基于内存亦可持久化的日志型、key-value 数据库,它支持多种数据类型,如字符串(string)、哈希(hash)、列表(list)、集合(set)和有序集合(sorted set)等。Redis 提供了多种语言的 API,通常被称为数据结构服务器。
651 1