python中__dict__与dir()区别
前言
Python下一切皆对象,每个对象都有多个属性(attribute),Python对属性有一套统一的管理方案。
__dict__与dir()
的区别:
- dir()是一个函数,返回的是list;
__dict__
是一个字典,键为属性名,值为属性值;- dir()用来寻找一个对象的所有属性,包括
__dict__
中的属性,__dict__
是dir()的子集;
并不是所有对象都拥有__dict__
属性。许多内建类型就没有__dict__
属性,如list,此时就需要用dir()来列出对象的所有属性。
实例
class MyName(object):def __init__(self):self.name = 'name'self.sex = 'female'me = MyName()
print(me.__dict__)
print(dir(me))
output
{'name': 'name', 'sex': 'female'}
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'name', 'sex']
结论
1. 实例的_dict_仅存储与该实例相关的实例属性
2. dir()是Python提供的一个API函数,dir()函数会自动寻找一个对象的所有属性(包括从父类中继承的属性)。
3. 一个实例的_dict_属性仅仅是那个实例的实例属性的集合,并不包含该实例的所有有效属性。所以如果想获取一个对象所有有效属性,应使用dir()。
4. dir()函数会自动寻找一个对象的所有属性,包括__dict__
中的属性。__dict__
是dir()的子集,dir()包含__dict__
中的属性。
参考:
http://blog.csdn.net/lis_12/article/details/53521554
python中__dict__与dir()区别相关推荐
- 列举至少五个python内置函数和使用方法_Python内置函数 next的具体使用方法 Python中seek和next区别...
python列表本来没有next方法,为什么用iter函数生...对list用__dir__()发现没有next方法,但是用iter()生成迭代器,对该迭代next是进行迭代的方法,只有迭代器和生成器 ...
- python中arg,*arg,**kwarg区别
python中arg,*arg,**kwarg区别 1. *args(*的作用很重要) 首先要搞清楚*的意思和作用,有助于理解arg,*arg,**kwarg. (*是arg的前半部分,arg是后半部 ...
- Python中is和==的区别以及is None
0 前言 Python中有很多运算符,今天我们就来讲讲is和==两种运算符在应用上的本质区别是什么. 在讲is和==这两种运算符区别之前,首先要知道Python中对象包含的三个基本要素,分别是:id( ...
- 19 Python __dict__与dir()区别
Python __dict__与dir() Python __dict__与dir __dict__属性 dir函数 结论 转载请标明出处(http://blog.csdn.net/lis_12/ar ...
- Python中“is”和“==”的区别
Python有两个用于相等比较的运算符,"is"和"=="(等于).在这篇文章中,我将教你们两者之间的区别,以及通过几个简单地例子说明什么时候使用它们. 当我还 ...
- pythonis啥意思-Python中is和==的区别
Python中有很多运算符,今天我们就来讲讲is和==两种运算符在应用上的本质区别是什么. 在讲is和==这两种运算符区别之前,首先要知道Python中对象包含的三个基本要素,分别是:id(身份标识) ...
- Python中is和==的区别
在Python中一切都是对象. Python中对象包含的三个基本要素,分别是:id(身份标识).type(数据类型)和value(值).对象之间比较是否相等可以用==,也可以用is. is和==都是对 ...
- python中str和int区别_python中eval与int的区别浅析
python中eval和int的区别是什么?下面给大家介绍一下: 1.eval()函数 eval(<字符串>)能够以Python表达式的方式解析并执行字符串,并将返回结果输出.eval() ...
- python中sort和sorted区别_Python中的 sort 和 sorted的用法与区别
今天在做一道题时,因为忘了Python中sort和sorted的用法与区别导致程序一直报错,找了好久才知道是使用方法错误的问题!现在就大致的归纳一下sort和sorted的用法与区别 1. sort: ...
最新文章
- 服务没有报告任何错误。 请键入 NET HELPMSG 3534 以获得更多的帮助。
- zuul 动态路由mysql_zuul 动态路由 - typistw的个人空间 - OSCHINA - 中文开源技术交流社区...
- G - Strongly connected - hdu 4635(求连通分量)
- Job for network.service failed because the control process exited with error code问题
- 动态内存管理:malloc和free以及new和delete的联系与区别
- 使用Docker 实现微服务并搭建博客,一文全掌握
- 最新出炉-阿里 2020届算法工程师-自然语言处理(实习生)以及补充:快递最短路径
- vue获取input的属性_vuejs 中如何优雅的获取 Input 值
- ceph怎么搭建文件存储_SUSE专家谈Ceph落地之最佳实践
- executeQuery()方法
- XHTML + CSS使用技巧
- Adobe Flex UIComponent LifeCycle
- Cocos2dx 之 PhysicsHandler 简单实现
- (七)HyperledgerFarbic1.4- Fabric的SDK使用
- ANSYS Workbench仿真(ADD):应力奇异点VS应力集中
- NginxWebUI--强大的nginx可视化配置工具
- Gerrit no Verified 在最新的2.7版本之后添加Verified
- Illegal character in authority at index 18:
- TortoiseGit-下载安装汉语语言包(汉化-方法)
- Arch Linux遇到的坑(下)