六、面向对象初级

chocolateone / 2023-09-05 / 原文

面向对象初级

  1. 面向对象的介绍:
  2. 面向过程和面向对象的介绍和区别:

面向过程:变量和函数。 “散落” 在文件的各个位置,甚至是不同文件中。看不出变量与函数的相关性,非常不利于维护,设计模式不清晰。经常导致程序员,忘记某个变量的相关性,而导致无法检测的错误。

面向对象:相关的变量和函数都“封装” 在对象里,以对象为单位来管理代码。变量与函数的相关性清晰,利于维护,设计模式清晰。程序员可以配合“继承” 来提高代码的可重用性,加强合作开发。

  1. 类的定义:因为我们程序是面向多人的,会有很多信息,数据,功能的冗余,所以需要进一步封装,使用一个关键字class,定义类来进一步封装。(我们就把一个人的相关的信息都包含在一起了我们将这个结构体称为类)
  2. 功能:封装函数,重复调用
  3. 封装的思想:把重复的代码封装起来,要用的时候就调用
  4. 定义类的语法规则:class 类名:(注意:类名命名规范是首字母大写)

注意:定义的类,不会执行里面的代码

C:\Users\巧克力\AppData\Local\Temp\1613140468(1).png

  1. 类里面的介绍:变量-属性;函数-方法
  2. 类的调用:能够通过类去访问里面的属性和方法

调用属性:类名.属性

调用方法:类名.方法名(类名.方法所使用的属性)

C:\Users\巧克力\AppData\Local\Temp\1613140901(1).png

  1. 如何定义类:编程可以理解为一个虚拟世界,类可理解为现实生活中的物(名称提取法),属性可理解为物的描述,方法(物的功能),要封装相关的变量和函数
  2. 初始化函数:__init__(),在实例化时会自动调用
  3. 实例化对象:通过实例对象访问里面的属性和方法(对象.属性)
  4. 作用:一旦实例化就会调用,所以__init__我们是做初始操作,对象的初始化
  5. 使用:

C:\Users\巧克力\AppData\Local\Temp\1613144384.png

注意:self = p

  1. 析构函数:def __del__(self):(在类中增加__del__函数,当删除实例的时候,就会调用此方法,del是用来删除对象,变量名 =None)

C:\Users\巧克力\AppData\Local\Temp\1613145551(1).png

  1. 对象的定义:类的实例化(对象调方法会自动把本身传入方法的第一个参数)
  2. 继承和重用
  3. 继承:

定义:定义多个类,下一层级的类继承上一层级的类的方法,利用继承,提取出它们相同的父类

作用:通过继承可以提高代码的复用性(减少重复性,可以把相同的方法定义到父类中,子类做继承。优化,升级,继承的手法升级功能,不改变已实现的功能(方便撤销,错误不影响原有系统))

语法规则:类(要继承的类)

C:\Users\巧克力\AppData\Local\Temp\1613230205(1).png

  1. 重用

定义:子类重新定义父类方法,让同一方法有不同的行为

C:\Users\巧克力\AppData\Local\Temp\1613230855(1).png

  1. 多继承
  2. 定义:重用后如果还想使用父类的方法,这个时候就可以通过类来调用
  3. 使用:如果子类想继续使用父类的行为,推荐使用super函数方法来实现

语法规则:super().调用父类的方法

C:\Users\巧克力\AppData\Local\Temp\1613266367(1).png

  1. 多继承的继承顺序

通过调用__base__ 和 __bases__ 可以看到,类继承的第一个和所有类

C:\Users\巧克力\AppData\Local\Temp\1613268915(1).png

通过mro方法可以看到类的mro查找顺序

Python对于所有类会自动生成mro查找顺序,此顺序决定了向上查找方法的过程

C:\Users\巧克力\AppData\Local\Temp\1613269088(1).png

  1. 总结:面向过程专注于每个开发流程节点,相当于打工人,去买螺蛳粉:下楼,找商店,购买,回来,吃;面向对象上帝,指挥者;相当于创建外卖员对象,外卖员对象.送外卖方法()