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中变量交换的例子
Aug 25 Python
Python实现短网址ShortUrl的Hash运算实例讲解
Aug 10 Python
判断网页编码的方法python版
Aug 12 Python
python解决汉字编码问题:Unicode Decode Error
Jan 19 Python
python实现发送邮件功能代码
Dec 14 Python
解决Python3中的中文字符编码的问题
Jul 18 Python
Python中xml和dict格式转换的示例代码
Nov 07 Python
python实现图片二值化及灰度处理方式
Dec 07 Python
python实现单目标、多目标、多尺度、自定义特征的KCF跟踪算法(实例代码)
Jan 08 Python
Django与pyecharts结合的实例代码
May 13 Python
python 瀑布线指标编写实例
Jun 03 Python
Python find()、rfind()方法及作用
Dec 24 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
怎样辨别一杯好咖啡
2021/03/03 新手入门
PHP 中执行系统外部命令
2006/10/09 PHP
php读取数据库信息的几种方法
2008/05/24 PHP
解析php中eclipse 用空格替换 tab键
2013/06/24 PHP
php合并js请求的例子
2013/11/01 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
PHP如何实现订单的延时处理详解
2017/12/30 PHP
PHP序列化的四种实现方法与横向对比
2018/11/29 PHP
PHP实现唤起微信支付功能
2019/02/18 PHP
YII框架行为behaviors用法示例
2019/04/26 PHP
CI框架简单分页类用法示例
2020/06/06 PHP
基于PHP实现邮箱验证激活过程详解
2020/10/28 PHP
一个可以增加和删除行的table并可编辑表格中内容
2014/06/16 Javascript
微信小程序实战之上拉(分页加载)效果(2)
2017/04/17 Javascript
浅谈Koa2框架利用CORS完成跨域ajax请求
2018/03/06 Javascript
JS实现HTML页面中动态显示当前时间完整示例
2018/07/30 Javascript
详解create-react-app 2.0版本如何启用装饰器语法
2018/10/23 Javascript
Django+vue跨域问题解决的详细步骤
2019/01/20 Javascript
小程序实现锚点滑动效果
2019/09/23 Javascript
axios 实现post请求时把对象obj数据转为formdata
2019/10/31 Javascript
如何基于javascript实现贪吃蛇游戏
2020/02/09 Javascript
vue中的循环对象属性和属性值用法
2020/09/04 Javascript
python操作gmail实例
2015/01/14 Python
Python操作Sqlite正确实现方法解析
2020/02/05 Python
Django在Model保存前记录日志实例
2020/05/14 Python
Python实现一个简单的毕业生信息管理系统的示例代码
2020/06/08 Python
在pytorch中动态调整优化器的学习率方式
2020/06/24 Python
美国知名的网上鞋类及相关服装零售商:Shoes.com
2017/05/06 全球购物
Farfetch香港官网:汇集全球时尚奢侈品购物平台
2017/11/26 全球购物
高中数学教师求职信
2013/10/30 职场文书
酒店中秋节活动方案
2014/01/31 职场文书
2014年综治宣传月活动总结
2014/04/28 职场文书
房产销售独家委托书范本
2014/10/01 职场文书
办公室主任岗位竞聘书
2015/09/15 职场文书
2016大一新生军训感言
2015/12/08 职场文书
MySQL InnoDB ReplicaSet(副本集)简单介绍
2021/04/24 MySQL