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用来获得图片exif信息的库实例分析
Mar 16 Python
Python线性回归实战分析
Feb 01 Python
python日期时间转为字符串或者格式化输出的实例
May 29 Python
python3监控CentOS磁盘空间脚本
Jun 21 Python
对numpy中二进制格式的数据存储与读取方法详解
Nov 01 Python
python实现整数的二进制循环移位
Mar 08 Python
python开发游戏的前期准备
May 05 Python
基于pytorch的保存和加载模型参数的方法
Aug 17 Python
python 实现return返回多个值
Nov 19 Python
用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码
Jul 13 Python
解决Python3.7.0 SSL低版本导致Pip无法使用问题
Sep 03 Python
Python 数据可视化之Matplotlib详解
Nov 02 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无限分类代码,支持数组格式化、直接输出菜单两种方式
2011/05/18 PHP
深入理解PHP之数组(遍历顺序)  Laruence原创
2012/06/13 PHP
php反射应用示例
2014/02/25 PHP
使用PHP实现微信摇一摇周边红包
2016/01/04 PHP
在WordPress中获取数据库字段内容和添加主题设置菜单
2016/01/11 PHP
php实现学生管理系统
2020/03/21 PHP
浅谈laravel数据库查询返回的数据形式
2019/10/21 PHP
js arguments.callee的应用代码
2009/05/07 Javascript
JS控制图片翻转示例代码(兼容firefox,ie,chrome)
2013/12/19 Javascript
JavaScript原型链示例分享
2014/01/26 Javascript
轻松创建nodejs服务器(4):路由
2014/12/18 NodeJs
jQuery结合AJAX之在页面滚动时从服务器加载数据
2015/06/30 Javascript
jQuery超酷平面式时钟效果代码分享
2020/03/30 Javascript
AngularJS基础 ng-include 指令简单示例
2016/08/01 Javascript
BootStrap Typeahead自动补全插件实例代码
2016/08/10 Javascript
Ubuntu系统下Angularjs开发环境安装
2016/09/01 Javascript
详解vue-Resource(与后端数据交互)
2017/01/16 Javascript
angular实现IM聊天图片发送实例
2017/05/08 Javascript
Node解决简单重复问题系列之Excel内容的获取
2018/01/02 Javascript
Vue项目中跨域问题解决方案
2018/06/05 Javascript
JointJS流程图的绘制方法
2018/12/03 Javascript
使用taro开发微信小程序遇到的坑总结
2019/04/08 Javascript
jQuery实现朋友圈查看图片
2020/09/11 jQuery
Python判断文本中消息重复次数的方法
2016/04/27 Python
django实现同一个ip十分钟内只能注册一次的实例
2017/11/03 Python
python生成九宫格图片
2018/11/19 Python
移动端适配 使px自动转换rem
2019/08/26 HTML / CSS
行政总监岗位职责
2013/12/05 职场文书
搬家公司的创业计划书
2014/01/01 职场文书
C++程序员求职信范文
2014/04/14 职场文书
小学语文教研活动总结
2014/07/01 职场文书
学生检讨书
2015/01/27 职场文书
第二次离婚起诉书
2015/05/18 职场文书
2015年秋学期师德师风建设工作总结
2015/10/23 职场文书
创业计划书之孕婴生活馆
2019/11/11 职场文书
springboot 全局异常处理和统一响应对象的处理方式
2022/06/28 Java/Android