__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__()

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

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

时间: 2024-08-03 07:23:39

__dict__和dir()的区别的相关文章

python __dict__ 跟 dir()的区别

__dict__:要是对象的话返回的是一个对象自身的实例属性.不包括类的属性:要是类的__dict__则不包括父类的属性,只包含自身类属性[方法.类变量],不包括实例属性.正是这样.每个实例的实例属性才会互不影响. dir():返回的是对象的所有属性.包括父类的属性 python一切皆对象.类本身也有__dict__函数.跟dir()函数.那么类与实例的两个函数有没有区别呢? 答案是:有的 class A(): Tang = "tang" def __init__(self): sel

Python __dict__与dir()区别

Python __dict__与dir() Python __dict__与dir __dict__属性 dir函数 结论 转载请标明出处(http://blog.csdn.net/lis_12/article/details/53521554). Python下一切皆对象,每个对象都有多个属性(attribute),Python对属性有一套统一的管理方案. __dict__与dir()的区别: dir()是一个函数,返回的是list: __dict__是一个字典,键为属性名,值为属性值: di

python中__dict__和dir()

转自:http://www.cnblogs.com/ifantastic/p/3768415.html 首先需要知道的是,dir() 是 Python 提供的一个 API 函数,dir() 函数会自动寻找一个对象的所有属性,包括搜索 __dict__ 中列出的属性. 不是所有的对象都有 __dict__ 属性.例如,如果你在一个类中添加了 __slots__ 属性,那么这个类的实例将不会拥有 __dict__ 属性,但是 dir() 仍然可以找到并列出它的实例所有有效属性. >>> cl

__doc__,__dict__和__dir__()的区别

__doc__,__dict__和__dir__(),这三个内置函数老是混淆,下面做出区别: __doc__:得到的是一个文档信息 __dict__:返回的是一个字典,字典的内容是类的属性 __dir__():返回的是关于函数或者类的属性和方法以及内置的函数等,如果没有括号就是一个返回一个对象的地址 __name__:返回的是函数的名字 class A: ''' 这个是调试 ''' def fun(self): print('in func') a = A() a.name = 'alex' a

js中console.log()和console.dir()的区别

console.log(),会在浏览器控制台打印信息 console.dir()可以显示一个对象的所有属性和方法(详细打印,利于分析对象) 原文地址:https://www.cnblogs.com/l-millie/p/10145075.html

Python双下划线方法解释

__init__ 类实例创建之后调用, 对当前对象的实例的一些初始化, 没有返回值 __name__ 标识模块的名字的一个系统变量 __call__ 是否可被调用 __main__ 主模块模块名(是否当前模块或导入模块) __new__ 创建类实例的方法, 创建对象时调用, 返回当前对象的一个实例 __init__.py 主要控制包的导入行为 __file__ 表示文件本身,输出的是一个绝对路径 sys.path.append(os.path.dirname(os.path.dirname(os

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

只要是有属性的数据对象(不一定是面向对象的对象实例,而是指具有数据类型的数据对象),都可以通过__dict__和dir()来显示数据对象的相关属性. __dict__可以看作是数据对象的名称空间,所以只包含自己的属性,且可以直接增.删.改.查__dict__. dir()可以看作是显示属性的包含显示,除了显示自己的还显示继承来的属性. 对于模块 参见:查看模块属性 对于类和对象 以下面的例子解释__dict__和dir()在应用于类和对象上的不同之处. class supcls: def hel

console.dir()和console.log()的区别

console.log()可以取代alert()或document.write(),在网页脚本中使用console.log()时,会在浏览器控制台打印出信息. console.dir()可以显示一个对象所有的属性和方法. 简单写了个例子: HTML: <button>console.log打印触发对象</button> <button>console.dir打印触发对象</button> JS://console.log 与 console.dir 的区别

Python 点滴 III

[Python模块的角色] 代码重用 系统命名空间的划分 实现共享服务和数据 [import模块工作步骤] 在Python中,导入并非只是如C中#include一样:把一个文件插入另外一个文件.程序第一次导入时,会执行三个步骤. 1. 找到模块 2. 编译成位码(需要时) 3. 执行模块的代码来创建其所定义的对象 [模块搜索路径] 按执行的先后顺序 1. 程序的主目录 2. PYTHONPATH目录 3. 标准链接库目录 4. 任何.pth文件的内容 这四个组件组合起来就变成了sys.path