Python中如何获取类属性的列表


Posted in Python onDecember 26, 2016

前言

最近工作中遇到个需求是要得到一个类的静态属性,也就是说有个类 Type ,我要动态获取 Type.FTE 这个属性的值。

最简单的方案有两个:

getattr(Type, 'FTE')
Type.__dict__['FTE']

那么,如果要获取类属性的列表,该怎么做呢?

首先上场的是 dir ,它能返回当前范围的所有属性名称列表:

>>> dir()
['__builtins__', '__doc__', '__name__', '__package__']
>>> dir(list)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

可以配合使用 inspect 包中的功能来过滤:

>>> [i for i in dir(list) if inspect.isbuiltin(getattr(list, i))]
['__new__', '__subclasshook__']

inspect 包中还包含:

>>> [i for i in dir(inspect) if inspect.isfunction(getattr(inspect, i))]
['_searchbases', 'classify_class_attrs', 'cleandoc', 'findsource', 'formatargspec', 'formatargvalues', 'getabsfile', 'getargs', 'getargspec', 'getargvalues', 'getblock', 'getcallargs', 'getclasstree', 'getcomments', 'getdoc', 'getfile', 'getframeinfo', 'getinnerframes', 'getlineno', 'getmembers', 'getmodule', 'getmoduleinfo', 'getmodulename', 'getmro', 'getouterframes', 'getsource', 'getsourcefile', 'getsourcelines', 'indentsize', 'isabstract', 'isbuiltin', 'isclass', 'iscode', 'isdatadescriptor', 'isframe', 'isfunction', 'isgenerator', 'isgeneratorfunction', 'isgetsetdescriptor', 'ismemberdescriptor', 'ismethod', 'ismethoddescriptor', 'ismodule', 'isroutine', 'istraceback', 'joinseq', 'namedtuple', 'stack', 'strseq', 'trace', 'walktree']

还可以配合 callable 来使用:

>>> [i for i in dir(inspect) if not callable(getattr(inspect, i))]
['CO_GENERATOR', 'CO_NESTED', 'CO_NEWLOCALS', 'CO_NOFREE', 'CO_OPTIMIZED', 'CO_VARARGS', 'CO_VARKEYWORDS', 'TPFLAGS_IS_ABSTRACT', '__author__', '__builtins__', '__date__', '__doc__', '__file__', '__name__', '__package__', '_filesbymodname', 'dis', 'imp', 'linecache', 'modulesbyfile', 'os', 're', 'string', 'sys', 'tokenize', 'types']

上面提到了 __dict__ ,也可以用它来获取属性列表:

>>> list.__dict__.keys()
['__getslice__', '__getattribute__', 'pop', 'remove', '__rmul__', '__lt__', '__sizeof__', '__init__', 'count', 'index', '__delslice__', '__new__', '__contains__', 'append', '__doc__', '__len__', '__mul__', 'sort', '__ne__', '__getitem__', 'insert', '__setitem__', '__add__', '__gt__', '__eq__', 'reverse', 'extend', '__delitem__', '__reversed__', '__imul__', '__setslice__', '__iter__', '__iadd__', '__le__', '__repr__', '__hash__', '__ge__']

总结

以上就是在Python中得到类属性列表的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

Python 相关文章推荐
Python实现的批量下载RFC文档
Mar 10 Python
Python自动化开发学习之三级菜单制作
Jul 14 Python
python如何读写json数据
Mar 21 Python
Python退火算法在高次方程的应用
Jul 26 Python
浅谈django orm 优化
Aug 18 Python
Python爬虫将爬取的图片写入world文档的方法
Nov 07 Python
使用k8s部署Django项目的方法步骤
Jan 14 Python
利用pyinstaller打包exe文件的基本教程
May 02 Python
Flask框架搭建虚拟环境的步骤分析
Dec 21 Python
Pytorch模型转onnx模型实例
Jan 15 Python
使用pyplot.matshow()函数添加绘图标题
Jun 16 Python
jupyter notebook 写代码自动补全的实现
Nov 02 Python
Python中强大的命令行库click入门教程
Dec 26 #Python
Python快速从注释生成文档的方法
Dec 26 #Python
浅谈Python类的__getitem__和__setitem__特殊方法
Dec 25 #Python
解决pyqt中ui编译成窗体.py中文乱码的问题
Dec 23 #Python
详解python进行mp3格式判断
Dec 23 #Python
详解python发送各类邮件的主要方法
Dec 22 #Python
详解python 发送邮件实例代码
Dec 22 #Python
You might like
2019年漫画销量排行榜:鬼灭登顶 海贼单卷制霸 尾田盛赞鬼灭
2020/03/08 日漫
Mysql数据库操作类( 1127版,提供源码下载 )
2010/12/02 PHP
php多种形式发送邮件(mail qmail邮件系统 phpmailer类)
2014/01/22 PHP
一个非常完美的读写ini格式的PHP配置类分享
2015/02/12 PHP
php 利用socket发送HTTP请求(GET,POST)
2015/08/24 PHP
PHP下使用mysqli的函数连接mysql出现warning: mysqli::real_connect(): (hy000/1040): ...
2016/02/14 PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
2016/02/26 PHP
php连接oracle数据库的方法(测试成功)
2016/05/26 PHP
jquery不支持toggle()高(新)版本的问题解决
2016/09/24 PHP
Laravel中10个有用的用法小结
2019/05/06 PHP
laravel-admin的图片删除实例
2019/09/30 PHP
Laravel框架集合用法实例浅析
2020/05/14 PHP
javascript 事件查询综合 推荐收藏
2010/03/10 Javascript
JavaScript程序员应该知道的45个实用技巧
2014/03/04 Javascript
javascript比较两个日期的先后示例代码
2014/12/31 Javascript
详解如何在NodeJS项目中优雅的使用ES6
2017/04/22 NodeJs
使用nodejs爬取前程无忧前端技能排行
2017/05/06 NodeJs
vue中轮训器的使用
2019/01/27 Javascript
javascript贪吃蛇游戏设计与实现
2020/09/17 Javascript
[04:07]显微镜下的DOTA2第八期——英雄复活动作
2014/06/24 DOTA
Python内置函数之filter map reduce介绍
2014/11/30 Python
详解python单例模式与metaclass
2016/01/15 Python
Python连接SQLServer2000的方法详解
2017/04/19 Python
python+matplotlib实现鼠标移动三角形高亮及索引显示
2018/01/15 Python
django中的HTML控件及参数传递方法
2018/03/20 Python
Django框架静态文件使用/中间件/禁用ip功能实例详解
2019/07/22 Python
python多线程分块读取文件
2019/08/29 Python
关于Python内存分配时的小秘密分享
2019/09/05 Python
面向对象学习之pygame坦克大战
2019/09/11 Python
keras-siamese用自己的数据集实现详解
2020/06/10 Python
CSS3轻松实现清新 Loading 效果的简单实例
2016/06/06 HTML / CSS
HTML5的结构和语义(5):内嵌媒体
2008/10/17 HTML / CSS
工作失职造成投诉的检讨书范文
2014/10/05 职场文书
2014-2015学年工作总结
2014/11/27 职场文书
2015幼儿园新学期寄语
2015/02/27 职场文书
Redis基本数据类型Zset有序集合常用操作
2022/06/01 Redis