python __dict__ 跟 dir()的区别

__dict__:要是对象的话返回的是一个对象自身的实例属性、不包括类的属性;要是类的__dict__则不包括父类的属性,只包含自身类属性【方法、类变量】,不包括实例属性。正是这样、每个实例的实例属性才会互不影响。

dir():返回的是对象的所有属性、包括父类的属性

python一切皆对象、类本身也有__dict__函数、跟dir()函数、那么类与实例的两个函数有没有区别呢?

答案是:有的

class A():
    Tang = "tang"
    def __init__(self):
        self.model = None
        self.setModel()

    def setModel(self):
        self.model = "tanglaoer"

class B(A):
    BLao = "BLao"
    def __init__(self):
        self.model = "hello world"
        super().__init__()

b = B()
print(b.__dict__)
print(B.__dict__)
print(A.__dict__)
print(dir(b))
print(dir(B))
print(dir(A))

打印结果

{‘model‘: ‘tanglaoer‘}
{‘__module__‘: ‘__main__‘, ‘BLao‘: ‘BLao‘, ‘__init__‘: <function B.__init__ at 0x1053c1378>, ‘__doc__‘: None}
{‘__module__‘: ‘__main__‘, ‘Tang‘: ‘tang‘, ‘__init__‘: <function A.__init__ at 0x1053c1488>, ‘setModel‘: <function A.setModel at 0x1053c1510>, ‘__dict__‘: <attribute ‘__dict__‘ of ‘A‘ objects>, ‘__weakref__‘: <attribute ‘__weakref__‘ of ‘A‘ objects>, ‘__doc__‘: None}
[‘BLao‘, ‘Tang‘, ‘__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__‘, ‘model‘, ‘setModel‘]
[‘BLao‘, ‘Tang‘, ‘__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__‘, ‘setModel‘]
[‘Tang‘, ‘__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__‘, ‘setModel‘]

原文地址:https://www.cnblogs.com/tangkaishou/p/11273605.html

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

python __dict__ 跟 dir()的区别的相关文章

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

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

python中is和==的区别

Python中  is 和 == 的区别的笔记 在 Python 中一切都是对象,毫无例外整数也是对象,对象之间比较是否相等可以用==,也可以用is.==和is操作的区别是: is比较的是两个对象的id值是否相等,也就是比较俩对象是否为同一个实例对象,是否指向同一个内存地址. ==比较的是两个对象的内容是否相等,默认会调用对象的__eq__()方法. 清楚is和==的区别之后,对此也许你有可能会遇到下面的这些困惑,于是就有了这样一篇文章,试图把Python中一些隐晦的东西趴出来,希望对你有一定的

python中==和is的区别

Python中的对象包含三要素:id.type.value, 其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值.is判断的是a对象是否就是b对象,是通过id来判断的:==判断的是a对象的值是否和b对象的值相等,是通过value来判断的.如下代码或许可以帮助我们理解.>>> a = 1>>> b = 1.0>>> a is bFalse>>> a == bTrue>>> id(a)127770

python -&gt; lambda与def的区别

lambda可以定义一个匿名函数,而def定义的函数必须有一个名字.这应该是lambda与def两者最大的区别. 与Javascript不同的是,python中匿名函数与非匿名函数需要使用不同的语法来定义.这是因为: lambda是一个expression,不是一个statement. lambda is an expression, not a statement. 因此lambda表达式可以出现在def无法出现的地方.比如list comprehension. lambda表达式可以匿名也可

python关键字is与 ==的区别

python关键字is与 ==的区别 最近在学习Python,总结一下小知识点. Python中的对象包含三要素:id.type.value 其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值 is判断的是a对象是否就是b对象,是通过id来判断的 ==判断的是a对象的值是否和b对象的值相等,是通过value来判断的 示例如下: >>> a=100 >>> b=100.0 >>> a is b False >>>

Python与其它编程语言的区别

Python与Java的区别 学习起来Python要比Java简单快速的多,java从c++这样的系统语言中继承了很多语法和复杂性,而Python的语法非常简洁,大大提高编写效率. Python与C#语言的区别 Python是解释型语言,不需要额外的编译过程,而C#必须编译后执行.另外,Python程序全部是开源的,但是C#就不是了,Python程序可以跨平台,不需要修改就可以运行在Windows和Linux等系统平台. Python & C++,Perl Python比C++等这类语言,更容易

2.python,pycharm,anaconda之间的区别与联系 - python基础入门

Python环境配置-Pycharm下载/Anaconda安装 中我们已经完成了 Pycharm 和Anaconda 的安装.可能对于刚接触的小伙伴还是比较懵逼的,一会python一会Anaconda一会又特么来了个pycharm,一串接一串英文,特么怎么读都还不知道!!! 一.python是什么 python是一门编程语言,当前比较流程的编程语言有C/C++  .JAVA .Object-C  .PHP等,当然python也是其中之一.每一种编程语言都有自己的语法和规范,要想通过python编

python中__dict__和dir()

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