前言

最近工作中遇到个需求是要得到一个类的静态属性,也就是说有个类 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中如何获取类属性的列表相关推荐

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

    前言 最近工作中遇到个需求是要得到一个类的静态属性,也就是说有个类 Type ,我要动态获取Type.FTE这个属性的值. 最简单的方案有两个: getattr(Type, 'FTE') Type._ ...

  2. WPF 使用依赖属性(DependencyProperty) 定义用户控件中的Image Source属性

    原文:WPF 使用依赖属性(DependencyProperty) 定义用户控件中的Image Source属性 如果你要自定义一个图片按钮控件,那么如何在主窗体绑定这个控件上图片的Source呢? ...

  3. python从收货信息,寄件信息等字符串中,获取姓名

    python从收货信息,寄件信息等字符串中,获取姓名 python代码: def getUserName(address):firstNames = {"赵","钱&qu ...

  4. python中的元类_python中的元类

    类也是对象,但是类有创建对象的能力 动态创建一个类: classmonkey():defbanana(self):print 'banana!' defapple(self):print 'i wan ...

  5. python class类_python中的class(类)

    编码注释: 在源文件的第一行或第二行写入如下内容: # -*- coding:gbk -*- # 设置源文件编码格式为:gbk 或 # -*- coding:utf-8 -*- # 设置源文件编码格式 ...

  6. 编写python程序、创建名为class的数据库_Python中的元类(metaclass)以及元类实现单例模式...

    一.理解类也是对象 在理解元类之前,你需要先掌握Python中的类.Python中类的概念借鉴于Smalltalk,这显得有些奇特.在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段.在P ...

  7. python元类_python中的元类 metaclass

    python中的元类 metaclass 在python中,类(class)本身也是一个实例对象, 它的类型则是元类, 如果没有指明, 则自定义类的类型是type. 换言之, 我们所定义的普通类都是t ...

  8. python中的元类_Python中的元类(metaclass)

    提问者自称已经掌握了有关Python OOP编程中的各种概念,但始终觉得元类(metaclass)难以理解.他知道这肯定和自身有关,但仍然觉得不太明白,希望大家可以给出一些实际的例子和代码片段以帮助理 ...

  9. python 类中定义类_Python中的动态类定义

    python 类中定义类 Here's a neat Python trick you might just find useful one day. Let's look at how you ca ...

最新文章

  1. POJ_1976 A Mini Locomotive (dp)
  2. 一道题教会你回溯、动态规划、贪心
  3. 如何分辨 SAP Fiori Launchpad 里的真假 Fiori 应用
  4. from PyQt4 import QtGui,QtCore出错-解
  5. 设计模式系列漫谈之一 - 观察者模式
  6. 51单片机基本刷屏测试实验_51单片机实验
  7. apulSoft apShaper for Mac(滤波失真插件)
  8. Eclipse之智能提示 actionscript javascript java开发环境智能提示
  9. 老外挑战360加固--实战分析(很详细)
  10. 电子设计教程18:射极跟随电路的参数设计
  11. 远程服务器套娃,无限套娃!RemoteView云上浏览器:运行在浏览器里的远程浏览器...
  12. JavaScript-function函数
  13. ElasticSearch—冷热(hotwarm)架构部署
  14. 干货|4个全网最实用的OCR图片文字识别软件合集
  15. 推荐10个AI人工智能技术网站
  16. ncnn yolov5.cpp切换yolov5n6模型(一)
  17. intern() of String
  18. 盲源分离matlab程序,分享一些盲源分离的代码及相关网址
  19. Android客户端请求服务器端的详细解释(附源代码)
  20. java 动态规划 硬币_硬币问题-动态规划详解

热门文章

  1. ACOUG China Tour 2019上海站,等你来约!
  2. Oracle 18c新特性:Schema-Only 帐号提升应用管理安全性
  3. THOR:MindSpore 自研高阶优化器源码分析和实践应用
  4. MySQL事务处理特性的实现原理
  5. 华为云FusionInsight助力宇宙行打造金融数据湖新标杆
  6. 使用体验神似VS Code?三步带你了解华为云CloudIDE前世今生
  7. 如果让你手写个栈和队列,你还会写吗?
  8. #华为云·寻找黑马程序员#【代码重构之路】我是如何将8行代码缩减成1行的
  9. 深度学习 GPU环境 Ubuntu 16.04 + Nvidia GTX 1080 + Python 3.6 + CUDA 9.
  10. 红橙Darren视频笔记 Handler源码简析与handler框架模拟 ThreadLocal