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简单日志处理类分享
Feb 14 Python
Python将阿拉伯数字转换为罗马数字的方法
Jul 10 Python
django model去掉unique_together报错的解决方案
Oct 18 Python
详解python中的 is 操作符
Dec 26 Python
Python编程实现线性回归和批量梯度下降法代码实例
Jan 04 Python
Python中property函数用法实例分析
Jun 04 Python
Python中list查询及所需时间计算操作示例
Jun 21 Python
python读取LMDB中图像的方法
Jul 02 Python
Python使用线程来接收串口数据的示例
Jul 02 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
Oct 12 Python
TensorFlow设置日志级别的几种方式小结
Feb 04 Python
python实现四人制扑克牌游戏
Apr 22 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
递归列出所有文件和目录
2006/10/09 PHP
php strcmp使用说明
2010/04/22 PHP
mac下安装nginx和php
2013/11/04 PHP
php简单的上传类分享
2016/05/15 PHP
PHP实现的注册,登录及查询用户资料功能API接口示例
2017/06/06 PHP
禁止F5等快捷键的JS代码
2007/03/06 Javascript
用js实现控制内容的向上向下滚动效果
2007/06/26 Javascript
用JQuery 实现AJAX加载XML并解析的脚本
2009/07/25 Javascript
Javascript学习笔记1 数据类型
2010/01/11 Javascript
调试Node.JS的辅助工具(NodeWatcher)
2012/01/04 Javascript
一个简单的JS鼠标悬停特效具体方法
2013/06/17 Javascript
jquery中常用的函数和属性详细解析
2014/03/07 Javascript
JavaScript转换与解析JSON方法实例详解
2015/11/24 Javascript
在React框架中实现一些AngularJS中ng指令的例子
2016/03/06 Javascript
JQuery 设置checkbox值二次无效的解决方法
2016/07/22 Javascript
基于Bootstrap实现城市三级联动
2017/11/23 Javascript
python实现从一组颜色中找出与给定颜色最接近颜色的方法
2015/03/19 Python
全面解析Python的While循环语句的使用方法
2015/10/13 Python
Python中functools模块的常用函数解析
2016/06/30 Python
python使用rpc框架gRPC的方法
2018/08/24 Python
Python判断一个文件夹内哪些文件是图片的实例
2018/12/07 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
2019/01/29 Python
Python 实现大整数乘法算法的示例代码
2019/09/17 Python
Python post请求实现代码实例
2020/02/28 Python
自定义Django默认的sitemap站点地图样式
2020/03/04 Python
python3发送request请求及查看返回结果实例
2020/04/30 Python
CSS3 创建网页动画实现弹跳球动效果
2018/10/30 HTML / CSS
详解HTML5 录音的踩坑之旅
2017/12/26 HTML / CSS
优秀党员转正的自我评价
2013/10/06 职场文书
初三物理教学反思
2014/01/21 职场文书
影子教师研修方案
2014/06/14 职场文书
运动会广播稿200字(10篇)
2014/10/12 职场文书
新教师个人工作总结
2015/02/06 职场文书
2015大学迎新晚会策划书
2015/07/16 职场文书
MySQL完整性约束的定义与实例教程
2021/05/30 MySQL
win11怎么消除图标小盾牌?win11消除图标小盾牌解决方法
2022/08/05 数码科技