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常见加密模块用法分析【MD5,sha,crypt模块】
May 24 Python
Django与JS交互的示例代码
Aug 23 Python
利用Python yagmail三行代码实现发送邮件
May 11 Python
解决安装python库时windows error5 报错的问题
Oct 21 Python
Python根据文件名批量转移图片的方法
Oct 21 Python
对pandas的层次索引与取值的新方法详解
Nov 06 Python
Python列表对象实现原理详解
Jul 01 Python
Django使用中间件解决前后端同源策略问题
Sep 02 Python
10行Python代码计算汽车数量的实现方法
Oct 23 Python
opencv3/C++图像像素操作详解
Dec 10 Python
tensorflow 实现数据类型转换
Feb 17 Python
python实现的人脸识别打卡系统
May 08 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/11/28 PHP
探讨GDFONTPATH能否被winxp下的php支持
2013/06/21 PHP
PHP自定义函数格式化json数据示例
2016/09/14 PHP
PHP+iframe图片上传实现即时刷新效果
2016/11/18 PHP
php批量修改表结构实例
2017/05/24 PHP
Yii框架日志记录Logging操作示例
2018/07/12 PHP
PHP whois查询类定义与用法示例
2019/04/03 PHP
php输出文字乱码的解决方法
2019/10/04 PHP
对Jquery中的ajax再封装,简化操作示例
2014/02/12 Javascript
使用jquery写个更改表格行顺序的小功能
2014/04/29 Javascript
ie8下修改input的type属性报错的解决方法
2014/09/16 Javascript
jquery实现选中单选按钮下拉伸缩效果
2015/08/06 Javascript
javascript判断复选框是否选中的方法
2015/10/16 Javascript
js判断移动端是否安装某款app的多种方法
2015/12/18 Javascript
jQuery中bind(),live(),delegate(),on()绑定事件方法实例详解
2016/01/19 Javascript
nodejs实现邮件发送服务实例分享
2017/03/29 NodeJs
详谈构造函数加括号与不加括号的区别
2017/10/26 Javascript
微信小程序scroll-view实现字幕滚动
2018/07/14 Javascript
[02:47]3.19DOTA2发布会 国服成长历程回顾
2014/03/25 DOTA
[03:01]DOTA2英雄基础教程 露娜
2014/01/07 DOTA
[02:41]2015国际邀请赛中国区预选赛观战指南
2015/05/20 DOTA
Python中的yield浅析
2014/06/16 Python
浅谈python中的实例方法、类方法和静态方法
2017/02/17 Python
python+opencv实现的简单人脸识别代码示例
2017/11/14 Python
python 字典修改键(key)的几种方法
2018/08/10 Python
python清除字符串前后空格函数的方法
2018/10/21 Python
python数据库编程 Mysql实现通讯录
2020/03/27 Python
搞笑获奖感言
2014/01/30 职场文书
一名老师的自我评价
2014/02/07 职场文书
幼儿园春季开学寄语
2014/04/03 职场文书
创先争优标语
2014/06/27 职场文书
毕业论文答辩开场白和答辩技巧
2015/05/27 职场文书
python爬取新闻门户网站的示例
2021/04/25 Python
Python 如何将integer转化为罗马数(3999以内)
2021/06/05 Python
MySQL连表查询分组去重的实现示例
2021/07/01 MySQL
排查并解决MySQL生产库内存使用率高的报警
2022/04/11 MySQL