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判断直线和矩形是否相交的方法
Jul 14 Python
Python协程的用法和例子详解
Sep 09 Python
详解python里使用正则表达式的分组命名方式
Oct 24 Python
Python中的上下文管理器和with语句的使用
Apr 17 Python
详解Django rest_framework实现RESTful API
May 24 Python
python skimage 连通性区域检测方法
Jun 21 Python
mvc框架打造笔记之wsgi协议的优缺点以及接口实现
Aug 01 Python
Python Django中间件,中间件函数,全局异常处理操作示例
Nov 08 Python
使用Keras构造简单的CNN网络实例
Jun 29 Python
pandas中对文本类型数据的处理小结
Nov 01 Python
解析python中的jsonpath 提取器
Jan 18 Python
Python3的进程和线程你了解吗
Mar 16 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的超级变量$_POST获取HTML表单(HTML Form) 数据
2011/05/07 PHP
php检测用户是否用手机(Mobile)访问网站的类
2014/01/09 PHP
PHP实现扎金花游戏之大小比赛的方法
2015/03/10 PHP
学习php设计模式 php实现观察者模式(Observer)
2015/12/09 PHP
JavaScript 创建对象
2009/07/17 Javascript
js实现翻页后保持checkbox选中状态的实现方法
2012/11/03 Javascript
基于jquery扩展漂亮的CheckBox(自己编写)
2013/11/19 Javascript
纯js实现无限空间大小的本地存储
2015/06/18 Javascript
javascript实现随机读取数组的方法
2015/08/03 Javascript
Javascript的表单验证-揭开正则表达式的面纱
2016/03/18 Javascript
基于React.js实现原生js拖拽效果引发的思考
2016/03/30 Javascript
Javascript动画效果(4)
2016/10/11 Javascript
vuejs通过filterBy、orderBy实现搜索筛选、降序排序数据
2020/10/26 Javascript
vue的Virtual Dom实现snabbdom解密
2017/05/03 Javascript
js与jQuery实现的用户注册协议倒计时功能实例【三种方法】
2017/11/09 jQuery
vue 实现全选全不选的示例代码
2018/03/29 Javascript
JQuery元素快速查找与操作
2018/04/22 jQuery
详解js访问对象的属性和方法
2018/10/25 Javascript
javaScript把其它类型转换为Number类型
2019/10/13 Javascript
详解如何在Javascript和Sass之间共享变量
2019/11/13 Javascript
基于js实现逐步显示文字输出代码实例
2020/04/02 Javascript
关于ES6尾调用优化的使用
2020/09/11 Javascript
Vue实现简易购物车页面
2020/12/30 Vue.js
[02:17]DOTA2亚洲邀请赛 RAVE战队出场宣传片
2015/02/07 DOTA
Python写的贪吃蛇游戏例子
2014/06/16 Python
pandas.dataframe中根据条件获取元素所在的位置方法(索引)
2018/06/07 Python
Pandas对每个分组应用apply函数的实现
2020/12/13 Python
python实现杨辉三角的几种方法代码实例
2021/03/02 Python
金融专业个人的自我评价
2013/10/18 职场文书
大专应届生个人的自我评价
2013/11/21 职场文书
高中生的自我鉴定范文
2014/01/24 职场文书
三八活动策划方案
2014/08/17 职场文书
先进人物事迹材料
2014/12/29 职场文书
学术研讨会欢迎词
2015/01/26 职场文书
2015年思想品德教学工作总结
2015/07/22 职场文书
MySQL创建定时任务
2022/01/22 MySQL