学习廖雪峰大神的Python教程时遇到的一个问题,尝试了一下得到的一些结论,总结梳理一下…..
首先说一下问题:
1 | class Model (dict, metaclass=ModelMetaclass): |
这是web实战的数据库部分的一段代码,我就比较好奇为什么可以用self访问**kw里的内容
于是我写了一个demo
1 | class test (dict): |
得到的结果是这样的
{'name':'JS'}
于是我猜想:self本身是一个字典吗,难道所有属性和方法都是以字典的方式存储的吗?
1 | class test (dict): |
得到的结果是这样的
{'name':'JS'}
我以为我的猜想对了
可是后来我一想,诶不对啊我貌似继承了dict啊
于是我又做了个测试
1 | class test (): |
得到的结果是这样的
<__main__.test object at 0x7f51c815ba20>
诶 class是object 那dict是什么呢,于是我开始上网查找…..
原来object是一个整体性的对数据的抽象概念,而dict是object的一种具体形式,就如同int float list tuple set都是object的子类,所以我们继承了dict之后self变成了一个dict,但是self本身的类型应该是object。