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 相关文章推荐
python基础教程之udp端口扫描
Feb 10 Python
python中ConfigParse模块的用法
Sep 29 Python
Python基于有道实现英汉字典功能
Jul 25 Python
python访问mysql数据库的实现方法(2则示例)
Jan 06 Python
深入学习Python中的装饰器使用
Jun 20 Python
Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】
Dec 26 Python
python绘制双Y轴折线图以及单Y轴双变量柱状图的实例
Jul 08 Python
快速解决vue.js 模板和jinja 模板冲突的问题
Jul 26 Python
关于pymysql模块的使用以及代码详解
Sep 01 Python
python提取xml里面的链接源码详解
Oct 15 Python
解决pyinstaller打包运行程序时出现缺少plotly库问题
Jun 02 Python
python爬虫--selenium模块
Mar 31 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
Syphon 使用方法
2021/03/03 冲泡冲煮
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
2009/03/13 PHP
php curl获取到json对象并转成数组array的方法
2018/05/31 PHP
微信公众号开发之获取位置信息php代码
2018/06/13 PHP
ubuntu下安装nodejs以及升级的办法
2015/05/08 NodeJs
Nodejs从有门道无门菜鸟起飞必看教程
2016/07/20 NodeJs
jQuery实现可兼容IE6的淡入淡出效果告警提示功能示例
2017/09/20 jQuery
electron demo项目npm install安装失败的解决方法
2018/02/06 Javascript
详解Angular-ui-BootStrap组件的解释以及使用
2018/07/13 Javascript
vue-cli 3.x 配置Axios(proxyTable)跨域代理方法
2018/09/19 Javascript
用vue-cli开发vue时的代理设置方法
2018/09/20 Javascript
简谈创建React Component的几种方式
2019/06/15 Javascript
新手入门带你学习JavaScript引擎运行原理
2019/06/24 Javascript
2020京东618叠蛋糕js脚本(亲测好用)
2020/06/02 Javascript
JavaScript实现烟花绽放动画效果
2020/08/04 Javascript
JavaScript中ES6规范中let和const的用法和区别
2020/08/06 Javascript
js实现购物车商品数量加减
2020/09/21 Javascript
python求解水仙花数的方法
2015/05/11 Python
python opencv设置摄像头分辨率以及各个参数的方法
2018/04/02 Python
对python中raw_input()和input()的用法详解
2018/04/22 Python
Pycharm2017版本设置启动时默认自动打开项目的方法
2018/10/29 Python
python爬取基于m3u8协议的ts文件并合并
2019/04/26 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
2020/06/02 Python
基于python实现可视化生成二维码工具
2020/07/08 Python
python代码能做成软件吗
2020/07/24 Python
PyQt5 QDockWidget控件应用详解
2020/08/12 Python
详解CSS的border边框属性及其在CSS3中的新特性
2016/05/10 HTML / CSS
纯CSS3实现鼠标悬停提示气泡效果
2014/02/28 HTML / CSS
台湾前三大B2C购物网站:MOMO购物网
2017/04/27 全球购物
linux比较文件内容的命令是什么
2013/03/04 面试题
幼儿园秋游感想
2014/03/12 职场文书
酒店管理专业毕业生求职自荐信
2014/04/28 职场文书
幼儿园运动会口号
2014/06/07 职场文书
舞蹈教育学专业自荐信
2014/06/15 职场文书
2015年党建工作目标责任书
2015/05/08 职场文书
MySQL 使用索引扫描进行排序
2021/06/20 MySQL