0.偶然间看到一个奇怪的现象
> x = 1 > a = var() > a['x'] 1
这是啥操作??用help(vars)之后,我才知道......
> help(vars) Help on built-in function vars in module builtins: vars(...) vars([object]) -> dictionary Without arguments, equivalent to locals(). With an argument, equivalent to object.__dict__.
如果,没传入参数就将相当于locals(),嗨,我还以为什么语法糖呢......
不知道locals()的老铁们,可以先自己试一试,之后会写
1.vars()走起
vars() 函数返回参数对象object的属性和属性值的字典对象
实际上调用了对象内部定义的__dict__属性
可以试试:
> vars(1) TypeError: vars() argument must have __dict__ attribute
由于1这个对象没有__dict__ 属性,所以报错
当然,如果参数为空则相当于调用locals()函数
我们做个试验:
class xx: def __init__(self): self.__dict__ = {'':'我是变量__dict__'}
接下来调用此类:
> a = xx() > vars(a) {'': '我是变量__dict__'}
没错吧,返回的是该对象的__dict__属性
简单说一下__dict__:
类的静态函数、类函数、普通函数、全局变量以及一些内置的属性都是放在类的__dict__里
一些内置的数据类型是没有__dict__属性的(可以尝试下 vars('我没有__dict__属性')这个语句)
2.总结
- vars()在没有传入参数的时候,相当于调用locals()
- 若传入自定义类的对象,则返回对象的__dict__属性,大多数自定义类会隐式创建__dict__属性
- 若传入一些内置的数据类型,则由于其没有__dict__属性,会报错:TypeError: vars() argument must have __dict__ attribute
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
华山资源网 Design By www.eoogi.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
华山资源网 Design By www.eoogi.com
暂无评论...
更新日志
2024年11月18日
2024年11月18日
- 蔡依林《MYSELF》 奢华庆菌版 2CD[WAV+CUE][1.5G]
- 刘春美《心与心寻世界名曲中文版》新京文[低速原抓WAV+CUE]
- 朱逢博《蔷薇蔷薇处处开》[FLAC+CUE]
- 姚璎格2005《心在哭泣》龙韵[WAV分轨]
- 费玉清《费玉清收藏》 2CD 华纳[WAV+CUE][1G]
- 徐怀钰《LOVE》台湾首版[WAV+CUE][1G]
- 群星《英皇精挑细选Vol.1》[WAV+CUE][1G]
- 郑钧.2007-长安长安【灯火文化】【WAV+CUE】
- 袁小迪向蕙玲.2005-纯情红玫瑰【全员集合】【WAV+CUE】
- 周华健.2015-水浒三部曲原创音乐选辑【滚石】【FLAC分轨】
- 钟志刚《为爱而歌DSD》[WAV+CUE]
- 孙露《情人的眼泪》[低速原抓WAV+CUE]
- 【雨果唱片】刘明源《胡琴专辑》1993[WAV+CUE]
- 黄莺莺《25周年纪念金曲专辑》[WAV+CUE][1.1G]
- 刘德丽《刘德丽新曲+精选》2023[WAV+CUE][1G]