您可以使用元类:

class AutoRegister(type):

def __new__(mcs, name, bases, classdict):

new_cls = type.__new__(mcs, name, bases, classdict)

#print mcs, name, bases, classdict

for b in bases:

if hasattr(b, 'register_subclass'):

b.register_subclass(new_cls)

return new_cls

class AbstractClassA(object):

__metaclass__ = AutoRegister

_subclasses = []

@classmethod

def register_subclass(klass, cls):

klass._subclasses.append(cls)

@classmethod

def get_concrete_classes(klass):

return klass._subclasses

class ConcreteClassA1(AbstractClassA):

pass

class ConcreteClassA2(AbstractClassA):

pass

class ConcreteClassA3(ConcreteClassA2):

pass

print AbstractClassA.get_concrete_classes()

我个人非常警惕这种魔法.不要在代码中加入太多内容.

python怎么创建子类_Python:如何在创建时使用父类注册所有子类相关推荐

  1. python 多进程绑定端口_Python教程之创建多进程

    点上面"东哥IT笔记",关注并星标 每天一篇业界最新技术分享 现在很多CPU都支持多核,甚至是手机都已经开始支持多核了.而Python的GIL(Global Interpreter ...

  2. python大文件排序_python实现按创建时间对文件排序

    测试中,测试log是经常需要保存一段时间以便于后续查询,但是如果一段时间不删除,会导致硬盘空间变小而影响自动化测试,通常空间太小,自动化测试case就不能调用了,或者即使调用,可能会引起新测试的log ...

  3. java 父类引用子类对象_java多态,如何理解父类引用指向子类对象

    java多态,如何理解父类引用指向子类对象 要理解多态性,首先要知道什么是"向上转型". 我定义了一个子类Cat,它继承了Animal类,那么后者就是前者是父类.我可以通过   C ...

  4. python创建追加_Python文件的创建与追加

    (转载)https://www.xshell.net/python/python_open.html Posted by 破冰 on 2013-9-17 17:29 Tuesday 一.用Python ...

  5. python虚拟环境安装包_Python虚拟环境的创建和包下载过程分析

    为什么使用虚拟环境 因为直接在真实环境进行安装python的包会造成环境之间的污染,因此需要创建虚拟环境,原则上每一个项目都需要有一个独属于自己的虚拟环境 Python项目的每次运行都需要启动环境,如 ...

  6. python 随机生成手机号码_Python实现随机创建电话号码的方法示例

    本文实例讲述了Python实现随机创建电话号码的方法.分享给大家供大家参考,具体如下: 当需要随机的生成一些电话号码的时候,可以使用以下脚本,简单实用,第一个列表中 list列表中的数字可以自己添加, ...

  7. python窗口显示表格_Python tkinter Treeview创建GUI表格(可编辑、新建单元格)

    版本:Python3.7 1.使用Treeview创建表格界面 from tkinter import ttk from tkinter import * root = Tk() # 初始框的声明 c ...

  8. python怎样创建变量_Python变量的创建

    Python 是一种动态类型语言,因此变量不需要显式地声明其数据类型.在Python 中,所有的数据都被抽象为"对象",变量通过赋值语句来指向对象,变量赋值的过程就是将变量与对象关 ...

  9. python分类下取得所有子类_Python中所有的异常类都是( ) 的子类。_学小易找答案...

    [单选题]在完整的异常语句中,语句出现的顺序正确的是( ). [单选题]下列语句打开文件的位置应该在( ). f = open('itheima.txt', 'w') [单选题]打开一个可读写的文件, ...

最新文章

  1. iOS 开发 需要的版本管理工具,UI图,bug管理工具等
  2. 【MM模块】Reservation 预留
  3. Windows 7 上怎样打开SQL Server 配置管理器
  4. 相邻省份最多的省区_2019年人口净流入最多的十座城市,其中有八座位于我国南方地区...
  5. 使用Angular的http client发送请求,请求response总是被当成json类型处理
  6. Java LocalDateTime类| 带示例的getDayOfWeek()方法
  7. upc 9325 序列本质
  8. c#图片色阶调整、亮度调整
  9. 算法:Design Circular Deque(设计一个双端队列)
  10. GPS: 经纬度概念
  11. 路由器2.4G和5G有什么区别
  12. 华为工程师猝死,36岁,22月无休:比挣钱更重要的是活着
  13. Arnold渲染用炫云云渲染让我动画制作更轻松了
  14. JavaScript中的onmouseover事件和onmouseout事件实例
  15. 如何解决 Elasticsearch 中未分配的分片
  16. Nginx搭建虚拟主机环境
  17. 自己申请计算机软件著作权可以下载电子版原件了?
  18. jquery 鼠标悬停/移动
  19. Virsh 虚拟机迁移
  20. Google Optimization Tools实现加工车间任务规划【Python版】

热门文章

  1. 北京市(朝阳区)(西城区)(海定区)正则表达式(代码保存)
  2. 30人的产研团队如何高效协同?
  3. Hologres助力飞猪双11实时数据大屏秒级响应
  4. 【干货】和你谈谈数据分析报告
  5. Service Mesh 初体验
  6. Spring 社区的唯一一个国产开源项目 - Spring Cloud Alibaba 毕业了
  7. 编码规范 | Java函数优雅之道(上)
  8. Serverless 在大规模数据处理中的实践
  9. 调查了 17,000 多位程序员,当前的云原生开发现状究竟如何?
  10. 数据库激荡 40 年,深入解析 PostgreSQL、NewSQL 演进历程