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脚本来获取Google搜索结果的示例
May 04 Python
使用Python编写爬虫的基本模块及框架使用指南
Jan 20 Python
python中matplotlib实现最小二乘法拟合的过程详解
Jul 11 Python
Django 中使用流响应处理视频的方法
Jul 20 Python
python reverse反转部分数组的实例
Dec 13 Python
Python使用folium excel绘制point
Jan 03 Python
Python实现的多进程拷贝文件并显示百分比功能示例
Apr 09 Python
Django使用redis缓存服务器的实现代码示例
Apr 28 Python
python实现批量视频分帧、保存视频帧
May 31 Python
Python Web框架之Django框架文件上传功能详解
Aug 16 Python
python 多进程并行编程 ProcessPoolExecutor的实现
Oct 11 Python
python如何写try语句
Jul 14 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
用PHP实现ODBC数据分页显示一例
2006/10/09 PHP
php查看session内容的函数
2008/08/27 PHP
深入php socket的讲解与实例分析
2013/06/13 PHP
PHP echo,print,printf,sprintf函数之间的区别与用法详解
2013/11/27 PHP
destoon数据库表说明汇总
2014/07/15 PHP
PDO::rollBack讲解
2019/01/29 PHP
ext 同步和异步示例代码
2009/09/18 Javascript
JavaScript 判断判断某个对象是Object还是一个Array
2010/01/28 Javascript
Jquery乱码的一次解决过程 图解教程
2010/02/20 Javascript
jQuery 遍历json数组的实现代码
2020/09/22 Javascript
常见JS验证脚本汇总
2015/12/01 Javascript
百度地图给map添加右键菜单(判断是否为marker)
2016/03/04 Javascript
使用ReactJS实现tab页切换、菜单栏切换、手风琴切换和进度条效果
2016/10/17 Javascript
xmlplus组件设计系列之分隔框(DividedBox)(8)
2017/05/02 Javascript
JS实现弹出下载对话框及常见文件类型的下载
2017/07/13 Javascript
JavaScript插件Tab选项卡效果
2017/11/14 Javascript
基于layui数据表格以及传数据的方式
2018/08/19 Javascript
d3.js实现图形缩放平移
2019/12/19 Javascript
浅析python 中__name__ = '__main__' 的作用
2014/07/05 Python
Python实现生成简单的Makefile文件代码示例
2015/03/10 Python
Python错误提示:[Errno 24] Too many open files的分析与解决
2017/02/16 Python
python opencv实现切变换 不裁减图片
2018/07/26 Python
flask框架中勾子函数的使用详解
2018/08/01 Python
Python3.5 Pandas模块缺失值处理和层次索引实例详解
2019/04/23 Python
使用python进行波形及频谱绘制的方法
2019/06/17 Python
pytorch 实现tensor与numpy数组转换
2019/12/27 Python
使用python求解二次规划的问题
2020/02/29 Python
PyQt5如何将.ui文件转换为.py文件的实例代码
2020/05/26 Python
浅谈keras 模型用于预测时的注意事项
2020/06/27 Python
python 使用多线程创建一个Buffer缓存器的实现思路
2020/07/02 Python
捐书寄语赠言
2014/01/18 职场文书
促销活动总结模板
2014/07/01 职场文书
2014年团总支工作总结
2014/11/21 职场文书
小学生读书笔记范文
2015/06/30 职场文书
2015年国庆节标语大全
2015/07/30 职场文书
Python中22个万用公式的小结
2021/07/21 Python