前言

Python下一切皆对象,每个对象都有多个属性(attribute),Python对属性有一套统一的管理方案。
__dict__与dir()的区别:

  1. dir()是一个函数,返回的是list;
  2. __dict__是一个字典,键为属性名,值为属性值;
  3. 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()区别相关推荐

  1. 列举至少五个python内置函数和使用方法_Python内置函数 next的具体使用方法 Python中seek和next区别...

    python列表本来没有next方法,为什么用iter函数生...对list用__dir__()发现没有next方法,但是用iter()生成迭代器,对该迭代next是进行迭代的方法,只有迭代器和生成器 ...

  2. python中arg,*arg,**kwarg区别

    python中arg,*arg,**kwarg区别 1. *args(*的作用很重要) 首先要搞清楚*的意思和作用,有助于理解arg,*arg,**kwarg. (*是arg的前半部分,arg是后半部 ...

  3. Python中is和==的区别以及is None

    0 前言 Python中有很多运算符,今天我们就来讲讲is和==两种运算符在应用上的本质区别是什么. 在讲is和==这两种运算符区别之前,首先要知道Python中对象包含的三个基本要素,分别是:id( ...

  4. 19 Python __dict__与dir()区别

    Python __dict__与dir() Python __dict__与dir __dict__属性 dir函数 结论 转载请标明出处(http://blog.csdn.net/lis_12/ar ...

  5. Python中“is”和“==”的区别

    Python有两个用于相等比较的运算符,"is"和"=="(等于).在这篇文章中,我将教你们两者之间的区别,以及通过几个简单地例子说明什么时候使用它们. 当我还 ...

  6. pythonis啥意思-Python中is和==的区别

    Python中有很多运算符,今天我们就来讲讲is和==两种运算符在应用上的本质区别是什么. 在讲is和==这两种运算符区别之前,首先要知道Python中对象包含的三个基本要素,分别是:id(身份标识) ...

  7. Python中is和==的区别

    在Python中一切都是对象. Python中对象包含的三个基本要素,分别是:id(身份标识).type(数据类型)和value(值).对象之间比较是否相等可以用==,也可以用is. is和==都是对 ...

  8. python中str和int区别_python中eval与int的区别浅析

    python中eval和int的区别是什么?下面给大家介绍一下: 1.eval()函数 eval(<字符串>)能够以Python表达式的方式解析并执行字符串,并将返回结果输出.eval() ...

  9. python中sort和sorted区别_Python中的 sort 和 sorted的用法与区别

    今天在做一道题时,因为忘了Python中sort和sorted的用法与区别导致程序一直报错,找了好久才知道是使用方法错误的问题!现在就大致的归纳一下sort和sorted的用法与区别 1. sort: ...

最新文章

  1. 服务没有报告任何错误。 请键入 NET HELPMSG 3534 以获得更多的帮助。
  2. zuul 动态路由mysql_zuul 动态路由 - typistw的个人空间 - OSCHINA - 中文开源技术交流社区...
  3. G - Strongly connected - hdu 4635(求连通分量)
  4. Job for network.service failed because the control process exited with error code问题
  5. 动态内存管理:malloc和free以及new和delete的联系与区别
  6. 使用Docker 实现微服务并搭建博客,一文全掌握
  7. 最新出炉-阿里 2020届算法工程师-自然语言处理(实习生)以及补充:快递最短路径
  8. vue获取input的属性_vuejs 中如何优雅的获取 Input 值
  9. ceph怎么搭建文件存储_SUSE专家谈Ceph落地之最佳实践
  10. executeQuery()方法
  11. XHTML + CSS使用技巧
  12. Adobe Flex UIComponent LifeCycle
  13. Cocos2dx 之 PhysicsHandler 简单实现
  14. (七)HyperledgerFarbic1.4- Fabric的SDK使用
  15. ANSYS Workbench仿真(ADD):应力奇异点VS应力集中
  16. NginxWebUI--强大的nginx可视化配置工具
  17. Gerrit no Verified 在最新的2.7版本之后添加Verified
  18. Illegal character in authority at index 18:
  19. TortoiseGit-下载安装汉语语言包(汉化-方法)
  20. Arch Linux遇到的坑(下)

热门文章

  1. IDEA的Docker插件实战(Dockerfile篇)
  2. 2022-2028年中国铁路信息化建设投资分析及前景预测报告
  3. 【牛腩新闻发布系统】开发前的准备01
  4. LeetCode简单题之下载插件
  5. 自动机器学习(AutoML)
  6. Python 扩展 Op
  7. 机器学习算法的优点和缺点总结
  8. Ipython的Window与Linux详细安装
  9. [微信官方文档] 小程序-错误码信息与解决方案表
  10. Ubuntu 系统通过终端打开AndroidStudio工具