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读取word文本操作详解
Jan 22 Python
基于Python 装饰器装饰类中的方法实例
Apr 21 Python
利用Python实现在同一网络中的本地文件共享方法
Jun 04 Python
Python math库 ln(x)运算的实现及原理
Jul 17 Python
基于django传递数据到后端的例子
Aug 16 Python
Windows10下Tensorflow2.0 安装及环境配置教程(图文)
Nov 21 Python
Python操作Jira库常用方法解析
Apr 10 Python
利用matplotlib为图片上添加触发事件进行交互
Apr 23 Python
Python3批量创建Crowd用户并分配组
May 20 Python
Matlab中plot基本用法的具体使用
Jul 17 Python
python3爬虫中多线程的优势总结
Nov 24 Python
Python爬虫教程之利用正则表达式匹配网页内容
Dec 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/09/04 PHP
解析php中heredoc的使用方法
2013/06/17 PHP
解析Win7 XAMPP apache无法启动的问题
2013/06/26 PHP
php分页函数完整实例代码
2014/09/22 PHP
php操作redis命令及代码实例大全
2020/11/19 PHP
对JavaScript的eval()中使用函数的进一步讨论
2008/07/26 Javascript
一些Javascript的IE和Firefox(火狐)兼容性的问题总结及常用例子
2009/05/21 Javascript
jquery中防刷IP流量软件影响统计的一点对策
2011/07/10 Javascript
JS文本框追加多个下拉框的值的简单实例
2013/07/12 Javascript
javascript 判断整数方法分享
2014/12/16 Javascript
Angularjs编写KindEditor,UEidtor,jQuery指令
2015/01/28 Javascript
基于jQuery实现仿淘宝套餐选择插件
2015/03/04 Javascript
基于Jquery easyui 选中特定的tab
2015/11/17 Javascript
jQuery插件pagination实现无刷新分页
2016/05/21 Javascript
BootStrap入门教程(一)之可视化布局
2016/09/19 Javascript
实现一个简单的vue无限加载指令方法
2017/01/10 Javascript
vue使用vue-i18n实现国际化的实现代码
2018/04/08 Javascript
vue使用技巧及vue项目中遇到的问题
2018/06/04 Javascript
详解在不使用ssr的情况下解决Vue单页面SEO问题
2018/11/08 Javascript
微信小程序发送短信验证码完整实例
2019/01/07 Javascript
浅谈React Native 传参的几种方式(小结)
2019/05/21 Javascript
JavaScript定时器设置、使用与倒计时案例详解
2019/07/08 Javascript
Vue实现Layui的集成方法步骤
2020/04/10 Javascript
[00:09]DOTA2新版本PA至宝特效动作展示
2014/11/19 DOTA
Python装饰器语法糖
2019/01/02 Python
Anaconda 查看、创建、管理和使用python环境的方法
2019/12/03 Python
python字典和json.dumps()的遇到的坑分析
2020/03/11 Python
10行Python代码实现Web自动化管控的示例代码
2020/08/14 Python
面向对象概念面试题(.NET)
2016/11/04 面试题
导游的职业规划书范文
2013/12/27 职场文书
交通安全演讲稿
2014/01/07 职场文书
会计求职简历自我评价
2015/03/10 职场文书
创业计划书之健康营养产业
2019/10/15 职场文书
SpringBoot详解自定义Stater的应用
2022/07/15 Java/Android
JS前端可视化canvas动画原理及其推导实现
2022/08/05 Javascript
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
2022/08/14 MySQL