码迷,mamicode.com
首页 > 其他好文 > 详细

__dict__和dir()的区别

时间:2019-09-11 20:05:27      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:get   ssh   init   list   文件   lis   ict   执行文件   setattr   

__dict__和dir()的区别

dir()
一般用来查看模块的属性

__dict__从某方面上来说是dir()的子集

可以直接打印dir(),显示的是当前执行文件所有的属性

__dict__

__dict__是对象的属性,有些对象是没有__dict__这个属性的

(list,dict...)

zx=[1,2,3,4]
zx2={"sa":"sad"}
print(dir(zx))

# print(zx2.__dict__)
# print(zx.__dict__)

小实验

打印zx的__dict__会把zx的内建函数全部打印出来

但是打印dir(zx)不会把内建函数打印出来,会把他封在__builtins__这个字典里面(导入模块的__builtins__是对__builtins__.__dict__的引用,之前文章有讲)

import zx

zx2={"sa":"sad"}

print(zx.__dict__)
print(dir(zx))
print(dir(__builtins__))

区别

返回数据类型

dir()

返回的是list形式的数据,数据只包含属性名

__dict__()

返回的是字典类型,字典键名是属性名,值为属性值

返回数据结果

dir()

返回的属性,包括自己的属性还包括通过继承来的属性

__dict__()

只有自己私有的属性

class zx1():
    name="zx"

class zx2(zx1):
    age=18

print(zx2.__dict__)
print(dir(zx2))
{'__module__': '__main__', 'age': 18, '__doc__': None}
['__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__', 'age', 'name']

作用上

dir()

返回的数据仅用来查看相关的数据信息

__dict__()

返回的数据是键值对形式的,可以直接进行访问,设置(反射)

__dict__和dir()的区别

标签:get   ssh   init   list   文件   lis   ict   执行文件   setattr   

原文地址:https://www.cnblogs.com/zx125/p/11508120.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!