Python如何使用vars返回对象的属性列表


Posted in Python onOctober 17, 2020

英文文档:

vars([object])

Return the __dict__ attribute for a module, class, instance, or any other object with a __dict__ attribute.
Objects such as modules and instances have an updateable __dict__ attribute; however, other objects may have write restrictions on their __dict__ attributes (for example, classes use a dictproxy to prevent direct dictionary updates).
Without an argument, vars() acts like locals(). Note, the locals dictionary is only useful for reads since updates to the locals dictionary are ignored.

返回当前作用域内的局部变量和其值组成的字典,或者返回对象的属性列表

说明

1. 当函数不接收参数时,其功能和locals函数一样,返回当前作用域内的局部变量。

#不带参数功能和locals函数一样
>>> v1 = vars()
>>> l1 = locals()
>>> v1
{'__name__': '__main__', '__builtins__': <module 'builtins' (built-in)>, 'v1': {...}, 'l1': {...}, '__spec__': None, '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>}
>>> l1
{'__name__': '__main__', '__builtins__': <module 'builtins' (built-in)>, 'v1': {...}, 'l1': {...}, '__spec__': None, '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>}

2. 当函数接收一个参数时,参数可以是模块、类、类实例,或者定义了__dict__属性的对象。

#作用于模块
>>> import time
>>> vars(time)
{'gmtime': <built-in function gmtime>, 'tzname': ('Öйú±ê׼ʱ¼ä', 'ÖйúÏÄÁîʱ'), 'timezone': -28800, 'struct_time': <class 'time.struct_time'>, 'ctime': <built-in function ctime>, 'perf_counter': <built-in function perf_counter>, 'mktime': <built-in function mktime>, 'localtime': <built-in function localtime>, 'time': <built-in function time>, '__package__': '', 'altzone': -32400, 'clock': <built-in function clock>, 'strptime': <built-in function strptime>, 'monotonic': <built-in function monotonic>, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, 'get_clock_info': <built-in function get_clock_info>, 'sleep': <built-in function sleep>, 'process_time': <built-in function process_time>, '__name__': 'time', '_STRUCT_TM_ITEMS': 9, '__spec__': ModuleSpec(name='time', loader=<class '_frozen_importlib.BuiltinImporter'>, origin='built-in'), '__doc__': 'This module provides various functions to manipulate time values.\n\nThere are two standard representations of time. One is the number\nof seconds since the Epoch, in UTC (a.k.a. GMT). It may be an integer\nor a floating point number (to represent fractions of seconds).\nThe Epoch is system-defined; on Unix, it is generally January 1st, 1970.\nThe actual value can be retrieved by calling gmtime(0).\n\nThe other representation is a tuple of 9 integers giving local time.\nThe tuple items are:\n year (including century, e.g. 1998)\n month (1-12)\n day (1-31)\n hours (0-23)\n minutes (0-59)\n seconds (0-59)\n weekday (0-6, Monday is 0)\n Julian day (day in the year, 1-366)\n DST (Daylight Savings Time) flag (-1, 0 or 1)\nIf the DST flag is 0, the time is given in the regular time zone;\nif it is 1, the time is given in the DST time zone;\nif it is -1, mktime() should guess based on the date and time.\n\nVariables:\n\ntimezone -- difference in seconds between UTC and local standard time\naltzone -- difference in seconds between UTC and local DST time\ndaylight -- whether local time should reflect DST\ntzname -- tuple of (standard time zone name, DST time zone name)\n\nFunctions:\n\ntime() -- return current time in seconds since the Epoch as a float\nclock() -- return CPU time since process start as a float\nsleep() -- delay for a number of seconds given as a float\ngmtime() -- convert seconds since Epoch to UTC tuple\nlocaltime() -- convert seconds since Epoch to local time tuple\nasctime() -- convert time tuple to string\nctime() -- convert time in seconds to string\nmktime() -- convert local time tuple to seconds since Epoch\nstrftime() -- convert time tuple to string according to format specification\nstrptime() -- parse string to time tuple according to format specification\ntzset() -- change the local timezone', 'strftime': <built-in function strftime>, 'asctime': <built-in function asctime>, 'daylight': 0}

#作用于类
>>> vars(slice)
mappingproxy({'__ne__': <slot wrapper '__ne__' of 'slice' objects>, '__getattribute__': <slot wrapper '__getattribute__' of 'slice' objects>, '__reduce__': <method '__reduce__' of 'slice' objects>, 'start': <member 'start' of 'slice' objects>, 'indices': <method 'indices' of 'slice' objects>, '__ge__': <slot wrapper '__ge__' of 'slice' objects>, 'stop': <member 'stop' of 'slice' objects>, '__eq__': <slot wrapper '__eq__' of 'slice' objects>, 'step': <member 'step' of 'slice' objects>, '__hash__': None, '__doc__': 'slice(stop)\nslice(start, stop[, step])\n\nCreate a slice object. This is used for extended slicing (e.g. a[0:10:2]).', '__repr__': <slot wrapper '__repr__' of 'slice' objects>, '__le__': <slot wrapper '__le__' of 'slice' objects>, '__gt__': <slot wrapper '__gt__' of 'slice' objects>, '__new__': <built-in method __new__ of type object at 0x6A91B420>, '__lt__': <slot wrapper '__lt__' of 'slice' objects>})

#作用于类实例
>>> class A(object):
  pass

>>> a.__dict__
{}
>>> vars(a)
{}
>>> a.name = 'Kim'
>>> a.__dict__
{'name': 'Kim'}
>>> vars(a)
{'name': 'Kim'}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用C语言来扩展Python程序和Zope服务器的教程
Apr 14 Python
python用Pygal如何生成漂亮的SVG图像详解
Feb 10 Python
对Tensorflow中权值和feature map的可视化详解
Jun 14 Python
Python minidom模块用法示例【DOM写入和解析XML】
Mar 25 Python
PIL对上传到Django的图片进行处理并保存的实例
Aug 07 Python
利用python实现PSO算法优化二元函数
Nov 13 Python
python判断无向图环是否存在的示例
Nov 22 Python
TensorFlow tf.nn.conv2d实现卷积的方式
Jan 03 Python
python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使用方法与实例
Feb 27 Python
使用Python构造hive insert语句说明
Jun 06 Python
Python基础之赋值,浅拷贝,深拷贝的区别
Apr 30 Python
Python使用openpyxl模块处理Excel文件
Jun 05 Python
Python使用eval函数执行动态标表达式过程详解
Oct 17 #Python
Python基于locals返回作用域字典
Oct 17 #Python
Python classmethod装饰器原理及用法解析
Oct 17 #Python
Python基于staticmethod装饰器标示静态方法
Oct 17 #Python
详解python算法常用技巧与内置库
Oct 17 #Python
Python 操作SQLite数据库的示例
Oct 16 #Python
python Selenium 库的使用技巧
Oct 16 #Python
You might like
php防止SQL注入详解及防范
2013/11/12 PHP
实例介绍PHP删除数组中的重复元素
2019/03/03 PHP
jquery text()要注意啦
2009/10/30 Javascript
JavaScript 打地鼠游戏代码说明
2010/10/12 Javascript
JavaScript入门之对象与JSON详解
2011/10/21 Javascript
poshytip 基于jquery的 插件 主要用于显示微博人的图像和鼠标提示等
2012/10/12 Javascript
node.js中的console.timeEnd方法使用说明
2014/12/09 Javascript
JavaScript中用字面量创建对象介绍
2014/12/31 Javascript
jQuery仿360导航页图标拖动排序效果代码分享
2015/08/24 Javascript
使用JS中的exec()方法构造正则表达式验证
2016/08/01 Javascript
浅谈jQuery双事件多重加载的问题
2016/10/05 Javascript
详解Nodejs之静态资源处理
2017/06/05 NodeJs
jQuery 1.9版本以上的浏览器判断方法代码分享
2017/08/28 jQuery
VUE前端cookie简单操作
2017/10/17 Javascript
jQuery实现图片简单轮播功能示例
2018/08/13 jQuery
nodejs初始化init的示例代码
2018/10/10 NodeJs
关于vue的npm run dev和npm run build的区别介绍
2019/01/14 Javascript
深入了解JavaScript 防抖和节流
2019/09/12 Javascript
node.js使用mongoose操作数据库实现购物车的增、删、改、查功能示例
2019/12/23 Javascript
vue项目开启Gzip压缩和性能优化操作
2020/10/26 Javascript
浅谈PyQt5中异步刷新UI和Python多线程总结
2019/12/13 Python
python模拟哔哩哔哩滑块登入验证的实现
2020/04/24 Python
对python pandas中 inplace 参数的理解
2020/06/27 Python
Python类绑定方法及非绑定方法实例解析
2020/10/09 Python
python如何利用Mitmproxy抓包
2020/10/10 Python
Python实现LR1文法的完整实例代码
2020/10/25 Python
详解CSS3的box-shadow属性制作边框阴影效果的方法
2016/05/10 HTML / CSS
采购部部门职责
2013/12/15 职场文书
社区维稳工作方案
2014/06/06 职场文书
自主招生自荐信怎么写
2015/03/24 职场文书
2015年法制宣传月活动总结
2015/03/26 职场文书
集团财务总监岗位职责
2015/04/03 职场文书
Python还能这么玩之用Python修改了班花的开机密码
2021/06/04 Python
你喜欢篮球吗?Python实现篮球游戏
2021/06/11 Python
解决IIS7下无法绑定https主机的问题
2022/04/29 Servers
ssh服务器拒绝了密码 请再试一次已解决(亲测有效)
2022/08/14 Servers