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中支持向量机SVM的使用方法详解
Dec 26 Python
Python将DataFrame的某一列作为index的方法
Apr 08 Python
Python实现定制自动化业务流量报表周报功能【XlsxWriter模块】
Mar 11 Python
selenium跳过webdriver检测并模拟登录淘宝
Jun 12 Python
使用python将多个excel文件合并到同一个文件的方法
Jul 09 Python
pyqt5、qtdesigner安装和环境设置教程
Sep 25 Python
浅析使用Python搭建http服务器
Oct 27 Python
django框架两个使用模板实例
Dec 11 Python
pytorch中的自定义数据处理详解
Jan 06 Python
15行Python代码实现免费发送手机短信推送消息功能
Feb 27 Python
关于python中的xpath解析定位
Mar 06 Python
python DES加密与解密及hex输出和bs64格式输出的实现代码
Apr 13 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 模拟$_PUT实现代码
2010/03/15 PHP
php牛逼的面试题分享
2013/01/18 PHP
浅谈php serialize()与unserialize()的用法
2013/06/05 PHP
PHP实现远程下载文件到本地
2015/05/17 PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
2021/03/04 PHP
jQuery 全选效果实现代码
2009/03/23 Javascript
全面解析JavaScript里的循环方法之forEach,for-in,for-of
2020/04/20 Javascript
jQuery实现的简单拖动层示例
2017/02/22 Javascript
Angular父组件调用子组件的方法
2018/04/02 Javascript
webstrom Debug 调试vue项目的方法步骤
2018/07/17 Javascript
vue-router传参用法详解
2019/01/19 Javascript
发布订阅模式在vue中的实际运用实例详解
2019/06/09 Javascript
python进阶教程之文本文件的读取和写入
2014/08/29 Python
python根据开头和结尾字符串获取中间字符串的方法
2015/03/26 Python
自动化Nginx服务器的反向代理的配置方法
2015/06/28 Python
Python新手入门最容易犯的错误总结
2017/04/24 Python
Python3 replace()函数使用方法
2018/03/19 Python
修改默认的pip版本为对应python2.7的方法
2018/11/06 Python
手把手教你使用Python创建微信机器人
2019/04/29 Python
Python中遍历列表的方法总结
2019/06/27 Python
Python装饰器的应用场景代码总结
2020/04/10 Python
宝塔面板成功部署Django项目流程(图文)
2020/06/22 Python
中专毕业生自我鉴定
2013/11/21 职场文书
考核工作实施方案
2014/03/30 职场文书
五水共治一句话承诺
2014/05/30 职场文书
运动会横幅标语
2014/06/17 职场文书
写字楼租赁意向书
2014/07/30 职场文书
庆国庆活动总结
2014/08/28 职场文书
借款协议书
2014/09/16 职场文书
汽车转让协议书
2015/01/29 职场文书
大学生旷课检讨书1000字
2015/02/19 职场文书
毕业生学校组织意见
2015/06/04 职场文书
2016年第32个教师节红领巾广播稿
2015/12/18 职场文书
安全教育培训心得体会
2016/01/15 职场文书
JavaScript ES6的函数拓展
2022/01/18 Javascript
《异世界四重奏》剧场版6月10日上映 PV视觉图原创角色发表
2022/03/20 日漫