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实现微信模板消息
Dec 21 Python
以一个投票程序的实例来讲解Python的Django框架使用
Feb 18 Python
Python的装饰器用法学习笔记
Jun 24 Python
Python处理文本文件中控制字符的方法
Feb 07 Python
Python基于ThreadingTCPServer创建多线程代理的方法示例
Jan 11 Python
使用Python给头像加上圣诞帽或圣诞老人小图标附源码
Dec 25 Python
wxpython自定义下拉列表框过程图解
Feb 14 Python
如何利用Python识别图片中的文字
May 31 Python
python实现简单的tcp 文件下载
Sep 16 Python
Python尾递归优化实现代码及原理详解
Oct 09 Python
python RSA加密的示例
Dec 09 Python
pytorch 预训练模型读取修改相关参数的填坑问题
Jun 05 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多维数组去掉重复值示例分享
2014/03/02 PHP
Laravel最佳分割路由文件(routes.php)的方式
2016/08/04 PHP
php探针使用原理和技巧讲解
2019/09/17 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
2020/05/14 PHP
web 页面分页打印的实现
2009/06/22 Javascript
提升PHP安全:8个必须修改的PHP默认配置
2014/11/17 Javascript
Javascript中获取对象的原型对象的方法小结
2015/02/25 Javascript
提高jQuery性能优化的技巧
2015/08/03 Javascript
jquery.cookie.js用法实例详解
2015/12/25 Javascript
AngularJS通过ng-route实现基本的路由功能实例详解
2016/12/13 Javascript
jQuery按需加载轮播图(web前端性能优化)
2017/02/17 Javascript
写jQuery插件时的注意点
2017/02/20 Javascript
Bootstrap fileinput文件上传预览插件使用详解
2017/05/16 Javascript
详解Vuejs2.0 如何利用proxyTable实现跨域请求
2017/08/03 Javascript
jQuery使用动画队列自定义动画操作示例
2018/06/16 jQuery
基于React Native 0.52实现轮播图效果
2020/08/25 Javascript
微信小程序自定义toast组件的方法详解【含动画】
2019/05/11 Javascript
JavaScript使用表单元素验证表单的示例代码
2019/08/20 Javascript
jquery获取input输入框中的值
2019/11/13 jQuery
python中利用xml.dom模块解析xml的方法教程
2017/05/24 Python
Python openpyxl读取单元格字体颜色过程解析
2019/09/03 Python
pytorch torch.nn.AdaptiveAvgPool2d()自适应平均池化函数详解
2020/01/03 Python
python获取依赖包和安装依赖包教程
2020/02/13 Python
python能自学吗
2020/06/18 Python
Huda Beauty官方商店:化妆和美容产品
2020/09/05 全球购物
企业治理工作自我评价
2013/09/26 职场文书
行政助理求职自荐信
2013/10/26 职场文书
高一化学教学反思
2014/02/05 职场文书
公务员政审个人鉴定
2014/02/25 职场文书
节能减排倡议书
2014/04/15 职场文书
《鸟岛》教学反思
2014/04/26 职场文书
实习证明格式范文
2015/06/16 职场文书
2016优秀护士先进个人事迹材料
2016/02/25 职场文书
2016年幼儿园教师师德承诺书
2016/03/25 职场文书
MySQL 分页查询的优化技巧
2021/05/12 MySQL
Java生成读取条形码和二维码的简单示例
2021/07/09 Java/Android