大家好,我是杨数Tos,这是《从零基础到大神》系列课程的第73篇文章,第三阶段的课程:Python进阶知识:类与对象(四);类与对象的名称空间,对象中属性查找的顺序。

面向对象七条设计原则记忆口诀(对象属性的查找顺序)(1)

一、类的名称空间

首先,类中存放的全部数据、方法是所有对象共有的,所有的对象都能使用;

其次,在Python中定义类的时候,Python解释器就会执行一遍类中代码;所以类的名称空间是类被定义的时候就产生的;

定义类的时候产生的名称空间包括:类体代码的内存地址,类名的内存地址,类名的内存地址会指向类体代码的内存地址;

面向对象七条设计原则记忆口诀(对象属性的查找顺序)(2)

二、对象的名称空间

对象的名称空间是在对象初次实例化(即创建对象的时候)就建立了;对象实例化的时候会产生:对象名的内存地址,对象体代码的内存地址,对象名会指向类体代码与对象本身的代码;

面向对象七条设计原则记忆口诀(对象属性的查找顺序)(3)

三、对象中属性查找的顺序

与其他编程语言不一样的地方在于,Python是支持继承并且是支持多继承的;

所以,在对象中查找属性的顺序是:

1、对象本身去查找,(若对象中没有,则2);

2、类中去查找 ,(若类中没有,则3);

3、去这个类的父类中去查找 ,(若父类中没有,则4);

4、去这个父类中的基类去查找,(若基类中也没有,则返回报错信息。

面向对象七条设计原则记忆口诀(对象属性的查找顺序)(4)

由于在Python中类是支持多继承的,所以引发多继承的“菱形问题”(即要先去哪一个父类中获取属性);这个我们会在接下来的文章中详细说明。

面向对象七条设计原则记忆口诀(对象属性的查找顺序)(5)

以上是本期内容,如果有表达不对的内容,欢迎您的留言、斧正,我们一起天天向上。

感谢您的阅读,您的三连【关注、点赞、收藏】就是对我最大的支持,谢谢!

本文由杨数Tos原创,欢迎关注,带你一起长知识。

,