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算法学习之计数排序实例
Dec 18 Python
Python读写Excel文件方法介绍
Nov 22 Python
python基础之包的导入和__init__.py的介绍
Jan 08 Python
python中的闭包函数
Feb 09 Python
Python多重继承的方法解析执行顺序实例分析
May 26 Python
利用Python产生加密表和解密表的实现方法
Oct 15 Python
Pycharm创建项目时如何自动添加头部信息
Nov 14 Python
python 经典数字滤波实例
Dec 16 Python
pandas的相关系数与协方差实例
Dec 27 Python
python 中不同包 类 方法 之间的调用详解
Mar 09 Python
详细分析Python可变对象和不可变对象
Jul 09 Python
requests在python中发送请求的实例讲解
Feb 17 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 的ArrayAccess接口 像数组一样来访问你的PHP对象
2010/10/12 PHP
php中通过curl smtp发送邮件
2012/06/05 PHP
php中mysql连接和基本操作代码(快速测试使用,简单方便)
2014/04/25 PHP
js计算精度问题小结
2013/04/22 Javascript
js查找节点的方法小结
2015/01/13 Javascript
javascript检测两个数组是否相似
2015/05/19 Javascript
JavaScript中的slice()方法使用详解
2015/06/06 Javascript
js+html5实现canvas绘制椭圆形图案的方法
2016/05/21 Javascript
js匿名函数作为函数参数详解
2016/06/01 Javascript
深入理解bootstrap框架之入门准备
2016/10/09 Javascript
微信小程序开发入门基础教程
2017/04/19 Javascript
JavaScript学习笔记之惰性函数示例详解
2017/08/27 Javascript
vue判断input输入内容全是空格的方法
2018/03/02 Javascript
微信小程序实现展示评分结果功能
2019/02/15 Javascript
JS实现购物车基本功能
2020/11/08 Javascript
布同 统计英文单词的个数的python代码
2011/03/13 Python
采用Psyco实现python执行速度提高到与编译语言一样的水平
2014/10/11 Python
python下调用pytesseract识别某网站验证码的实现方法
2016/06/06 Python
详解python里使用正则表达式的全匹配功能
2017/10/19 Python
对pandas中iloc,loc取数据差别及按条件取值的方法详解
2018/11/06 Python
利用python实现对web服务器的目录探测的方法
2019/02/26 Python
Pycharm如何打断点的方法步骤
2019/06/13 Python
Python OpenCV图像指定区域裁剪的实现
2019/10/30 Python
Python 求数组局部最大值的实例
2019/11/26 Python
python如何使用腾讯云发送短信
2020/09/17 Python
Selenium获取登录Cookies并添加Cookies自动登录的方法
2020/12/04 Python
密封类可以有虚函数吗
2014/08/11 面试题
演讲稿怎么写才完美
2014/01/02 职场文书
军训学生自我鉴定
2014/02/12 职场文书
大学生村官承诺书
2014/03/28 职场文书
承诺书格式范文
2014/06/03 职场文书
补充协议书
2015/01/28 职场文书
免职通知
2015/04/23 职场文书
保险公司增员口号
2015/12/25 职场文书
MySQL主从搭建(多主一从)的实现思路与步骤
2021/05/13 MySQL