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的exec、eval使用分析
Dec 11 Python
python实现求最长回文子串长度
Jan 22 Python
浅析Python四种数据类型
Sep 26 Python
python中pika模块问题的深入探究
Oct 13 Python
解决Python一行输出不显示的问题
Dec 03 Python
Python爬虫之UserAgent的使用实例
Feb 21 Python
python递归下载文件夹下所有文件
Aug 31 Python
tensorflow的ckpt及pb模型持久化方式及转化详解
Feb 12 Python
python实现同一局域网下传输图片
Mar 20 Python
解决pyPdf和pyPdf2在合并pdf时出现异常的问题
Apr 03 Python
Python3如何实现Win10桌面自动切换
Aug 11 Python
python 实现网易邮箱邮件阅读和删除的辅助小脚本
Mar 01 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中实现图片的锐化
2006/10/09 PHP
PHP与SQL注入攻击[三]
2007/04/17 PHP
php实现cookie加密的方法
2015/03/10 PHP
PHP之浮点数计算比较以及取整数不准确的解决办法
2015/07/29 PHP
JS代码判断IE6,IE7,IE8,IE9的函数代码
2013/08/02 Javascript
javascript ready和load事件的区别示例介绍
2013/08/30 Javascript
JavaScript中用toString()方法返回时间为字符串
2015/06/12 Javascript
js实现YouKu的漂亮搜索框效果
2015/08/19 Javascript
JS+CSS实现精美的二级导航效果代码
2015/09/17 Javascript
JS实现仿腾讯微博无刷新删除微博效果代码
2015/10/16 Javascript
jQuery实现的点击按钮改变样式功能示例
2018/07/21 jQuery
使用Vue实现移动端左滑删除效果附源码
2019/05/16 Javascript
layui原生表单验证的实例
2019/09/09 Javascript
小程序如何获取多个formId实现详解
2019/09/20 Javascript
JavaScript进阶(二)词法作用域与作用域链实例分析
2020/05/09 Javascript
vue中父子组件传值,解决钩子函数mounted只运行一次的操作
2020/07/27 Javascript
Vue实现input宽度随文字长度自适应操作
2020/07/29 Javascript
JavaScript async/await原理及实例解析
2020/12/02 Javascript
jquery实现广告上下滚动效果
2021/03/04 jQuery
深入解析Python中的线程同步方法
2016/06/14 Python
Python实现Sqlite将字段当做索引进行查询的方法
2016/07/21 Python
详解python 字符串和日期之间转换 StringAndDate
2017/05/04 Python
python实现类之间的方法互相调用
2018/04/29 Python
通过自学python能找到工作吗
2020/06/21 Python
matplotlib源码解析标题实现(窗口标题,标题,子图标题不同之间的差异)
2021/02/22 Python
HTML5注册页面示例代码
2014/03/27 HTML / CSS
美国花布包包品牌:Vera Bradley
2017/08/11 全球购物
乐高西班牙官方商店:LEGO Shop ES
2019/12/01 全球购物
xml有哪些解析技术?区别是什么
2016/04/26 面试题
天鹅的故事教学反思
2014/02/04 职场文书
五一手机促销方案
2014/03/08 职场文书
试用期转正员工自我评价
2014/09/18 职场文书
2016年清明节期间群众祭祀活动工作总结
2016/04/01 职场文书
Python-OpenCV教程之图像的位运算详解
2021/06/21 Python
SQL语法CONSTRAINT约束操作详情
2022/01/18 MySQL
Python OpenCV超详细讲解基本功能
2022/04/02 Python