大家好,我是杨数Tos,这是《从零基础到大神》系列课程的第73篇文章,第三阶段的课程:Python进阶知识:类与对象(四);类与对象的名称空间,对象中属性查找的顺序。
![df61cda94b374d3945ff2fea4f1e49e8.png](https://img-blog.csdnimg.cn/img_convert/df61cda94b374d3945ff2fea4f1e49e8.png)
一、类的名称空间
首先,类中存放的全部数据、方法是所有对象共有的,所有的对象都能使用;
其次,在Python中定义类的时候,Python解释器就会执行一遍类中代码;所以类的名称空间是类被定义的时候就产生的;
定义类的时候产生的名称空间包括:类体代码的内存地址,类名的内存地址,类名的内存地址会指向类体代码的内存地址;
![c27d550d0b95f118fcb163339ec7db87.png](https://img-blog.csdnimg.cn/img_convert/c27d550d0b95f118fcb163339ec7db87.png)
二、对象的名称空间
对象的名称空间是在对象初次实例化(即创建对象的时候)就建立了;对象实例化的时候会产生:对象名的内存地址,对象体代码的内存地址,对象名会指向类体代码与对象本身的代码;
![a719b40ed4b5fd7a6f4668291827cfc2.png](https://img-blog.csdnimg.cn/img_convert/a719b40ed4b5fd7a6f4668291827cfc2.png)
三、对象中属性查找的顺序
与其他编程语言不一样的地方在于,Python是支持继承并且是支持多继承的;
所以,在对象中查找属性的顺序是:
1、对象本身去查找,(若对象中没有,则2);
2、类中去查找,(若类中没有,则3);
3、去这个类的父类中去查找,(若父类中没有,则4);
4、去这个父类中的基类去查找,(若基类中也没有,则返回报错信息。
![3cc34faccbfdb609a70410dff43e33cb.png](https://img-blog.csdnimg.cn/img_convert/3cc34faccbfdb609a70410dff43e33cb.png)
由于在Python中类是支持多继承的,所以引发多继承的“菱形问题”(即要先去哪一个父类中获取属性);这个我们会在接下来的文章中详细说明。
![91bcde2173b222856bb9a174ee010016.png](https://img-blog.csdnimg.cn/img_convert/91bcde2173b222856bb9a174ee010016.png)
以上是本期内容,如果有表达不对的内容,欢迎您的留言、斧正,我们一起天天向上。
感谢您的阅读,您的三连【关注、点赞、收藏】就是对我最大的支持,谢谢!
本文由杨数Tos原创,欢迎关注,带你一起长知识。