__dict__和dir()的区别

Posted zx125

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了__dict__和dir()的区别相关的知识,希望对你有一定的参考价值。

__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()的区别的主要内容,如果未能解决你的问题,请参考以下文章

python的dir()和__dict__属性的区别

__doc__,__dict__和__dir__()的区别

Python __dict__与dir()区别

python __dict__ 跟 dir()的区别

dir()和vars()的区别就是

php -- 取路径:getcwd()__DIR____FILE__ 的区别