python怎么创建子类_Python:如何在创建时使用父类注册所有子类
您可以使用元类:
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:如何在创建时使用父类注册所有子类相关推荐
- python 多进程绑定端口_Python教程之创建多进程
点上面"东哥IT笔记",关注并星标 每天一篇业界最新技术分享 现在很多CPU都支持多核,甚至是手机都已经开始支持多核了.而Python的GIL(Global Interpreter ...
- python大文件排序_python实现按创建时间对文件排序
测试中,测试log是经常需要保存一段时间以便于后续查询,但是如果一段时间不删除,会导致硬盘空间变小而影响自动化测试,通常空间太小,自动化测试case就不能调用了,或者即使调用,可能会引起新测试的log ...
- java 父类引用子类对象_java多态,如何理解父类引用指向子类对象
java多态,如何理解父类引用指向子类对象 要理解多态性,首先要知道什么是"向上转型". 我定义了一个子类Cat,它继承了Animal类,那么后者就是前者是父类.我可以通过 C ...
- python创建追加_Python文件的创建与追加
(转载)https://www.xshell.net/python/python_open.html Posted by 破冰 on 2013-9-17 17:29 Tuesday 一.用Python ...
- python虚拟环境安装包_Python虚拟环境的创建和包下载过程分析
为什么使用虚拟环境 因为直接在真实环境进行安装python的包会造成环境之间的污染,因此需要创建虚拟环境,原则上每一个项目都需要有一个独属于自己的虚拟环境 Python项目的每次运行都需要启动环境,如 ...
- python 随机生成手机号码_Python实现随机创建电话号码的方法示例
本文实例讲述了Python实现随机创建电话号码的方法.分享给大家供大家参考,具体如下: 当需要随机的生成一些电话号码的时候,可以使用以下脚本,简单实用,第一个列表中 list列表中的数字可以自己添加, ...
- python窗口显示表格_Python tkinter Treeview创建GUI表格(可编辑、新建单元格)
版本:Python3.7 1.使用Treeview创建表格界面 from tkinter import ttk from tkinter import * root = Tk() # 初始框的声明 c ...
- python怎样创建变量_Python变量的创建
Python 是一种动态类型语言,因此变量不需要显式地声明其数据类型.在Python 中,所有的数据都被抽象为"对象",变量通过赋值语句来指向对象,变量赋值的过程就是将变量与对象关 ...
- python分类下取得所有子类_Python中所有的异常类都是( ) 的子类。_学小易找答案...
[单选题]在完整的异常语句中,语句出现的顺序正确的是( ). [单选题]下列语句打开文件的位置应该在( ). f = open('itheima.txt', 'w') [单选题]打开一个可读写的文件, ...
最新文章
- iOS 开发 需要的版本管理工具,UI图,bug管理工具等
- 【MM模块】Reservation 预留
- Windows 7 上怎样打开SQL Server 配置管理器
- 相邻省份最多的省区_2019年人口净流入最多的十座城市,其中有八座位于我国南方地区...
- 使用Angular的http client发送请求,请求response总是被当成json类型处理
- Java LocalDateTime类| 带示例的getDayOfWeek()方法
- upc 9325 序列本质
- c#图片色阶调整、亮度调整
- 算法:Design Circular Deque(设计一个双端队列)
- GPS: 经纬度概念
- 路由器2.4G和5G有什么区别
- 华为工程师猝死,36岁,22月无休:比挣钱更重要的是活着
- Arnold渲染用炫云云渲染让我动画制作更轻松了
- JavaScript中的onmouseover事件和onmouseout事件实例
- 如何解决 Elasticsearch 中未分配的分片
- Nginx搭建虚拟主机环境
- 自己申请计算机软件著作权可以下载电子版原件了?
- jquery 鼠标悬停/移动
- Virsh 虚拟机迁移
- Google Optimization Tools实现加工车间任务规划【Python版】
热门文章
- 北京市(朝阳区)(西城区)(海定区)正则表达式(代码保存)
- 30人的产研团队如何高效协同?
- Hologres助力飞猪双11实时数据大屏秒级响应
- 【干货】和你谈谈数据分析报告
- Service Mesh 初体验
- Spring 社区的唯一一个国产开源项目 - Spring Cloud Alibaba 毕业了
- 编码规范 | Java函数优雅之道(上)
- Serverless 在大规模数据处理中的实践
- 调查了 17,000 多位程序员,当前的云原生开发现状究竟如何?
- 数据库激荡 40 年,深入解析 PostgreSQL、NewSQL 演进历程