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实现数通设备端口使用情况监控实例
Jul 15 Python
Python读csv文件去掉一列后再写入新的文件实例
Dec 28 Python
解决python3中解压zip文件是文件名乱码的问题
Mar 22 Python
python 读取目录下csv文件并绘制曲线v111的方法
Jul 06 Python
Python 多线程不加锁分块读取文件的方法
Dec 11 Python
python 处理telnet返回的More,以及get想要的那个参数方法
Feb 14 Python
python 使用plt画图,去除图片四周的白边方法
Jul 09 Python
在pandas中遍历DataFrame行的实现方法
Oct 23 Python
python 实现读取csv数据,分类求和 再写进 csv
May 18 Python
高考考python编程是真的吗
Jul 20 Python
python3中确保枚举值代码分析
Dec 02 Python
python Scrapy爬虫框架的使用
Jan 21 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
怎样辨别一杯好咖啡
2021/03/03 新手入门
用PHP和MySQL保存和输出图片
2006/10/09 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
2013/06/28 PHP
微信推送功能实现方式图文详解
2019/07/12 PHP
dreamweaver 安装Jquery智能提示
2011/04/02 Javascript
table对象中的insertRow与deleteRow使用示例
2014/01/26 Javascript
js 金额格式化来回转换示例
2014/02/23 Javascript
file控件选择上传文件确定后触发的js事件是哪个
2014/03/17 Javascript
JavaScript中的原始值和复杂值
2016/01/07 Javascript
JS图片压缩(pc端和移动端都适用)
2017/01/12 Javascript
JS 组件系列之BootstrapTable的treegrid功能
2017/06/16 Javascript
input框中自动展示当前日期yyyy/mm/dd的实现方法
2017/07/06 Javascript
jQuery实现键盘回车搜索功能
2017/07/25 jQuery
vue.js的computed,filter,get,set的用法及区别详解
2018/03/08 Javascript
浅析vue.js数组的变异方法
2018/06/30 Javascript
php中and 和 &amp;&amp;出坑指南
2018/07/13 Javascript
手把手带你入门微信小程序新框架Kbone的使用
2020/02/25 Javascript
python 简易计算器程序,代码就几行
2009/08/29 Python
在Python中操作时间之mktime()方法的使用教程
2015/05/22 Python
python制作爬虫爬取京东商品评论教程
2016/12/16 Python
python实现按长宽比缩放图片
2018/06/07 Python
python连接mongodb密码认证实例
2018/10/16 Python
python绘制双Y轴折线图以及单Y轴双变量柱状图的实例
2019/07/08 Python
Python读写文件模式和文件对象方法实例详解
2019/09/17 Python
使用Python 自动生成 Word 文档的教程
2020/02/13 Python
Python tornado上传文件的功能
2020/03/26 Python
利用Python pandas对Excel进行合并的方法示例
2020/11/04 Python
Django REST Framework 分页(Pagination)详解
2020/11/30 Python
园林技术个人的自我评价
2014/02/15 职场文书
标准化管理实施方案
2014/02/25 职场文书
企业演讲比赛主持词
2014/03/18 职场文书
患者身份识别制度
2015/08/06 职场文书
班主任经验交流心得体会
2015/11/02 职场文书
导游词之河北邯郸
2019/09/12 职场文书
Java 多线程并发FutureTask
2022/06/28 Java/Android
JS前端canvas交互实现拖拽旋转及缩放示例
2022/08/05 Javascript