新样式类(即从object,这是Python 3中的缺省值。__subclasses__方法,该方法返回以下子类:class Foo(object): passclass Bar(Foo): passclass Baz(Foo): passclass Bing(Bar): pass

以下是子类的名称:print([cls.__name__ for cls in Foo.__subclasses__()])# ['Bar', 'Baz']

下面是子类本身:print(Foo.__subclasses__())# [, ]

确认子类确实列出Foo作为他们的基础:for cls in Foo.__subclasses__():

print(cls.__base__)# #

注意,如果您想要子类,您必须递归:def all_subclasses(cls):

return set(cls.__subclasses__()).union(

[s for c in cls.__subclasses__() for s in all_subclasses(c)])print(all_subclasses(Foo))# {,

, }

注意,如果尚未执行子类的类定义(例如,如果尚未导入子类的模块),则该子类还不存在,并且__subclasses__不会找到的。

你提到了“有名无实”。因为Python类是第一类对象,所以不需要使用带有类名的字符串来代替类或类似的东西。您可以直接使用这个类,您可能应该这样做。

如果确实有一个字符串表示类的名称,并且希望找到该类的子类,那么有两个步骤:查找给定名称的类,然后用__subclasses__如上段所述。

如何从名称中找到类取决于您期望在哪里找到它。如果您希望在与试图定位类的代码相同的模块中找到它,那么cls = globals()[name]

会做这件事,或者在不太可能的情况下,你会在当地人身上找到它,cls = locals()[name]

如果类可能在任何模块中,那么您的名称字符串应该包含完全限定的名称-类似于'pkg.module.Foo'而不是仅仅'Foo'..使用importlib要加载类的模块,请检索相应的属性:import importlib

modname, _, clsname = name.rpartition('.')mod = importlib.import_module(modname)cls = getattr(mod, clsname)

不管你发现了哪一门课,cls.__subclasses__()然后返回其子类的列表。

python分类下取得所有子类_如何找到给定名称的类的所有子类?相关推荐

  1. python语言下划线怎么打_初学Python语言者必须理解的下划线

    下划线(_)在Python语言中有特殊作用. 在大多数编程语言中,下划线是命名变量或者函数名称时的连字符,但是,在Python语言中,不仅如此.如果你是一名Python程序员,对于诸如 _ in ra ...

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

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

  3. 用于python环境下的数据操作_数据分析(一):环境搭建,以及初步操作文件

    1.准备工作 ①定义:用适当的统计分析方法对收集来的大量数据进行分析,提取有用信息和形成结论,对数据加以详细研究和概括总结的过程 ②环境部署,可以再pycharm中做也可以再jupyter中做 ③ju ...

  4. python分类模型干嘛的_你都用 Python 来做什么?

    作为计算机专业的学生,主要学习的是c++.在大二选修了python,如今过去了一年,可以说这一年里python对我来说用处颇多.下面就列举一下我学习python到现在都用它来做了什么. 1. 学pyt ...

  5. python 分类变量转为哑变量_如何转化哑变量

    Python分析建模,日常问题整理(四) 确认过时间,离发工资还有四周. 2018.08.13~2018.08.19 numpy的argmax.arange方法对哑变量的转化 a = numpy.ar ...

  6. python 分类变量转为哑变量_机器学习笔记——哑变量处理

    在机器学习的特征处理环节,免不了需要用到类别型特征,这类特征进入模型的方式与一般数值型变量有所不同. 通常根据模型的需要,类别型特征需要进行哑变量处理,即按照特征类别进行编码,一般一个类别为k的特征需 ...

  7. python selenium 下拉框选择_【selenium】基于python语言,如何用select选择下拉框

    在项目测试中遇到了下拉框选择的控件,来总结下如何使用select选择下拉框: 下图是Select类的初始化描述,意思是,给定元素是得是select类型,不是就抛异常.接下来给了例子:要操作这个sele ...

  8. python 分类变量转为哑变量_超级详细的特征哑变量处理

    这里全程以df这个为例来讲解 import pandas as pd df=pd.DataFrame({'性别':['男','女','男','女'],'age':[2,3,4,3]}) df get_ ...

  9. python网球比赛模拟主持稿_跪求:关于体育类节目的模拟主持稿

    展开全部 致长跑运动员 人类的力量在那一刹那展现,拚搏在那一瞬间62616964757a686964616fe58685e5aeb931333239303739化为生命的起点,在那一刻万物化为虚有,只 ...

最新文章

  1. CVPR 2020目标跟踪多篇开源论文(下)
  2. php mysql 时间差_PHP中计算时间差的方法
  3. android listview数据动态加载_Android | Tangram动态页面之路(六)数据分离
  4. Objective-C:MRC(引用计数器)获得对象所有权的方式(init、retain、copy等)
  5. 一天搞定CSS:层级(z-index)--18
  6. zookeeper集群启动的时候有一个别没有启动成功,出现Error contacting service. It is probably not running解决方法
  7. 可以上传视频的网站大全
  8. 第1章 Ext JS介绍与快速入门[1/4]
  9. 20191001:String,StringBuffer,StringBuilder类异同辨析
  10. chrome redhat 下载源_RedHat 7.0 Chrome浏览器 安装
  11. 软件配置--ubuntu16.04
  12. 用MATLAB求系统状态方程,利用MATLAB求解系统的状态方程..doc
  13. 层叠上下文、层叠层级、层叠顺序
  14. 最新小学计算机课五年级上册目录,部编版小学语文教材2020最新调整!涉及20多篇课文!(附2020年教育部中小学生阅读指导目录)...
  15. 清除 DNS 缓存( 附全平台详细教程 )
  16. IM即时通讯-项目框架搭建(二)
  17. TI BSL in python
  18. OpenMW版本,Zotac蒸汽机评论以及更多开放式游戏新闻
  19. java c des ecb_PHP、Java的Des加密(ECB mode)
  20. Building Worlds In Unreal 学习笔记——07-11 岩石树落木灌木绘制/溪水着色器/潮湿与焦散贴花/后处理

热门文章

  1. Cognitive Inference:认知推理下的常识知识库资源、常识推理测试评估与中文实践项目索引
  2. 第一个关于中式菜谱的智能问答机器人小程序正式上线啦
  3. 034 Android NavigationView和DrawerLayout实现抽屉式导航设计(侧边栏效果)
  4. k8s 基础概念和术语
  5. spoj839 Optimal Marks(最小割,dinic)
  6. python - 内置函数
  7. JOptionPane弹框常用实例
  8. 赛码网算法: 军训队列( python实现 )
  9. Hibernate第十一篇【配置C3P0数据库连接池、线程Session】
  10. 莫名的证书错误...ERROR ITMS-90035:Invalid Signature.