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 相关文章推荐
Mac下Supervisor进程监控管理工具的安装与配置
Dec 16 Python
Python简单的制作图片验证码实例
May 31 Python
python时间日期函数与利用pandas进行时间序列处理详解
Mar 13 Python
Numpy数据类型转换astype,dtype的方法
Jun 09 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
Jul 06 Python
基于Python的ModbusTCP客户端实现详解
Jul 13 Python
python Django的web开发实例(入门)
Jul 31 Python
TensorFlow实现打印每一层的输出
Jan 21 Python
django执行数据库查询之后实现返回的结果集转json
Mar 31 Python
详解python方法之绑定方法与非绑定方法
Aug 17 Python
超级实用的8个Python列表技巧
Aug 24 Python
Python实现京东抢秒杀功能
Jan 25 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函数代码
2010/04/22 PHP
php数组函数序列之krsort()- 对数组的元素键名进行降序排序,保持索引关系
2011/11/02 PHP
php数字游戏 计算24算法
2012/06/10 PHP
PHP中time(),date(),mktime()区别介绍
2013/09/28 PHP
wamp安装后自定义配置的方法
2014/08/23 PHP
基于JQuery的一句代码实现表格的简单筛选
2010/07/26 Javascript
基于Jquery的标签智能验证实现代码
2010/12/27 Javascript
再谈javascript图片预加载技术(详细演示)
2011/03/12 Javascript
js禁止小键盘输入数字功能代码
2011/08/01 Javascript
js单例模式详解实例
2013/11/21 Javascript
js实现键盘Enter键提交表单的方法
2015/05/27 Javascript
浅谈Javascript数组的使用
2015/07/29 Javascript
JavaScript ES6的新特性使用新方法定义Class
2016/06/28 Javascript
详解数组Array.sort()排序的方法
2020/05/09 Javascript
ES6模块化的import和export用法方法总结
2017/08/08 Javascript
使用原生js封装的ajax实例(兼容jsonp)
2017/10/12 Javascript
jQuery niceScroll滚动条错位问题的解决方法
2018/02/03 jQuery
vue利用axios来完成数据的交互
2018/03/23 Javascript
原生JS 实现的input输入时表格过滤操作示例
2019/08/03 Javascript
JavaScript实现缓动动画
2020/11/25 Javascript
python3使用pyqt5制作一个超简单浏览器的实例
2017/10/19 Python
python求前n个阶乘的和实例
2020/04/02 Python
python numpy实现rolling滚动案例
2020/06/08 Python
Python urllib request模块发送请求实现过程解析
2020/12/10 Python
python实现跨年表白神器--你值得拥有
2021/01/04 Python
不开辟用于交换数据的临时空间,如何完成字符串的逆序
2012/12/02 面试题
NET程序员上机面试题
2015/05/23 面试题
质检的岗位职责
2013/11/17 职场文书
实习生个人的自我评价
2013/12/08 职场文书
自主实习接收函
2014/01/13 职场文书
《石榴》教学反思
2014/03/02 职场文书
公司委托书怎么写
2014/08/02 职场文书
2014年党员干部四风问题自我剖析材料
2014/09/29 职场文书
电力工程合作意向书
2015/05/11 职场文书
2016年社区“我们的节日·中秋节”活动总结
2016/04/05 职场文书
python的html标准库
2022/04/29 Python