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()

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/520967.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新品发布、降价普惠、拥抱开源、出海全球化 | 杭州云栖企业数字化转型峰会上的那些关键词

9月19日,在杭州云栖大会 - 企业数字化转型峰会现场,阿里巴巴中间件产品总监赵林分享了2018 Aliware的最新产品动态。本文将为您梳理Aliware在出海全球化、开源支持、消息队列高级特性降价、链路追踪新品发布、应用高可用新品发布、CloudToolkit 新品发布…

华为获颁中国首个5G基站设备进网许可证:可支持中国规模部署;IBM推出新一代企业平台Z15;Testin最新AI产品发布……...

关注并标星星CSDN云计算极客头条:速递、最新、绝对有料。这里有企业新动、这里有业界要闻,打起十二分精神,紧跟fashion你可以的!每周两次,打卡即read更快、更全了解泛云圈精彩newsgo go go 荣耀V30 5G手机概念图&#…

Docker启动容器时出现错误

在centos7(装在虚拟机上)中用docker启动一个hadoop容器 命令如下: docker run -i -t --name Master2 -h Master2 registry.cn-hangzhou.aliyuncs.com/kaibb/hadoop /bin/bash 然后出现了如下错误: Error response from daemon: up…

php数组 函数,PHP array_uintersect_uassoc() 函数

PHP array_uintersect_uassoc() 函数PHP Array 函数定义和用法array_uintersect_uassoc 函数带索引检查计算数组的交集,用回调函数来比较数据和索引。array_uintersect_uassoc() 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组…

如何完成一次Apache的版本发布

理解Apache发布的内容和流程 总的来说,Source Release是Apache关注的重点,也是发布的必须内容;而Binary Release是可选项,Dubbo可以选择是否发布二进制包到Apache仓库或者发布到Maven中央仓库。 请参考以下链接,找到…

p沟道mos管导通条件_打开知识大门的捷径!MOS管基本认识

01三个极的判定G极(gate)—栅极,不用说比较好认 S极(source)—源极,不论是P沟道还是N沟道,两根线相交的就是 D极(drain)—漏极,不论是P沟道还是N沟道,是单独引线的那边02N沟道与P沟道判别箭头指向G极的是N沟道 箭头背向…

大繁至简,首度揭秘阿里云飞天洛神系统

“最好的网络就像神一样,无处不在,又感知不到她的存在 …… 大繁至简,这是我们努力的方向。” – 阿里云网络高级技术专家 孙成浩 2018杭州云栖大会的主会场上,阿里云产品总监何云飞介绍了阿里云自主研发的云操作系统飞天的全…

(Docker实战) 第2篇:Centos7 拉取和部署Gitlab

文章目录搭建gitlab1. 拉取并运行gitlab所需要的redis镜像2. 拉取并运行gitlab所需要的postgresql镜像3. 下载并运行gitlab搭建gitlab 参考:https://github.com/sameersbn/docker-gitlab 1. 拉取并运行gitlab所需要的redis镜像 docker run --name gitlab-redis -d…

redis系列:通过队列案例学习list命令

前言 这一篇文章将讲述Redis中的list类型命令,同样也是通过demo来讲述,其他部分这里就不在赘述了。 项目Github地址:https://github.com/rainbowda/learnWay/tree/master/learnRedis/case-list 案例 demo功能是队列,整个demo的…

php生成图片文件流,php如何将base64数据流文件转换为图片文件?

2017-03-07在开发中,自己遇到一个前端在上传图片的时候,使用的base64数据流文件显示的图片。也就是说***image/后面的jpg是我们的图片文件格式,(base64,)后面的很大一长串就是具体的文件信息。data:image/jpg;base64则是指的文件头。我们可以…

python time sleep和wait_Python和硒:driver.implicitly_wait()和time.sleep()之间的区别...

Yes, I know both are used to wait for some specified time.Selenium:driver.implicitly_wait(10)Python:import timetime.sleep(10)Is there any difference between these two?解决方案time.sleep(secs)time.sleep(secs) suspends the execution of the current thread fo…

2019年程序员薪酬报告:平均年薪超70万!40岁后,这类人不“保值”了

Hired 近日发布了《2019 年度薪酬状况报告》,重点结论如下:仅有 23% 的硕士 / 博士表示,高学历带来了高薪,大部分人表示学历不是全部76% 的技术工作者认为,参加编程培训机构对求职有帮助在美国,技术工作者在…

业务代码解构利器--SWAK

简介 业务的不断发展、商品类型的不断增多、不断添加的业务需求使得闲鱼的代码出现“bad smell”——平台代码和业务代码耦合严重难以分离;业务和业务之间代码交织缺少拆解。这也是行业中的通病。为解决此类问题,闲鱼自研了一套技术框架——SWAK。本文带…

MySQL8.0 · 优化器新特性 · Cost Model, 直方图及优化器开销优化

MySQL当前已经发布到MySQL8.0版本,在新的版本中,可以看到MySQL之前被人诟病的优化器部分做了很多的改动,由于笔者之前的工作环境是5.6,最近切换到最新的8.0版本,本文涵盖了一些本人感兴趣的和优化器相关的部分&#xf…

(Docker实战) 第4篇:Centos7 拉取和部署Redis

文章目录搭建redis搭建redis docker run --name redis -di --publish 6379:6379 redis:4.0远程验证测试: 想学习更多微服务、分布式、中间件、数据库、项目快速构建等系列技术 请访问http://gblfy.com 让我们一起进步!!!

python autohotkey_PyAutoGUI-python版的autoit/AHK

简单介绍各个图形界面自动操作的python库,类似按键精灵\autoit\ahk(autohotkey)等等这些自动化工具。这类python库不是只是用来实现自动游戏之类的程序,业界也用这些库来做GUI 自动化测试。第一推荐的库: PyAutoGUI 跨平台PyAutoGUI 在windows下无依赖&a…

阿里巴巴上线静态开源站点搭建工具 Docsite

近日,阿里巴巴在Github上线了静态开源站点搭建工具Docsite,这是一款集官网、文档、博客和社区为一体的静态开源站点的解决方案,具有简单易上手、上手不撒手的特质,同时支持react和静态渲染、PC端和移动端、支持中英文国际化、SEO、…

重磅 | 边缘计算核心技术辨析

戳蓝字“CSDN云计算”关注我们哦!作者 | 中国电信广研院责编 | 阿秃边缘计算(Edge Computing)是云计算向边缘的延伸,本文对边缘计算、雾计算、MEC、Cloudlet、分布式云等边缘计算领域相关概念和技术的定义、架构、场景等进行了比…

php请求接口两次,php curl post请求执行一次curl_exce 请求的接口确执行两次

1、php curl post请求接口,打印日志执行了一次curl_exce,但是请求的接口却重复执行两次.2、代码:$ch curl_init();if(false $ch){writeRedisLog(create_curl, $activity_id, $mobile, $user_id, , 0, curl failed to initialize);}curl_set…

(Docker实战) 第5篇:Centos7 拉取和部署搭建 NEXUS私服

文章目录搭建nexus私服1. 安装nexus3(admin/admin123)2 .配置nexus32.1 新建一个maven2(proxy)仓库2.2. 新建一个maven2(hosted)仓库2.3. 配置public仓库搭建nexus私服 1. 安装nexus3(admin/admin123) #创建文件夹,安装过程如果…