python中如何获取类的属性_Python中如何获取类属性的列表

搜索热词

前言

最近工作中遇到个需求是要得到一个类的静态属性,也就是说有个类 Type ,我要动态获取Type.FTE这个属性的值。

最简单的方案有两个:

getattr(Type,'FTE')

Type.__dict__['FTE']

那么,如果要获取类属性的列表,该怎么做呢?

首先上场的是 dir ,它能返回当前范围的所有属性名称列表:

>>> dir()

['__builtins__','__doc__','__name__','__package__']

>>> dir(list)

['__add__','__class__','__contains__','__delattr__','__delitem__','__delslice__','__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__','__file__','__package__','_filesbymodname','dis','imp','linecache','modulesbyfile','os','re','string','sys','tokenize','types']

上面提到了 __dict__ ,也可以用它来获取属性列表:

>>> list.__dict__.keys()

['__getslice__','sort','__add__','__ge__']

总结

以上就是在Python中得到类属性列表的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

相关文章

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值