动静态方法、类的继承及查找顺序

昨日内容回顾

  • 对象的概念

    python中一切存在均为对象,对象是名称与功能的结合。

  • 编程思想两大组成

    编程思想按照关注点可以分为面向过程及面向对象。

    面向过程编程关注事件进行的流程,一个事件的结束就标志着该段编程的终点。

    面向对象编程关注对象的状态,不关注对象经历的事件。

  • 类与对象的定义

    使用class加类名的方式定义类,类名加括号生成对象。

  • 类与对象的基本操作

    查看名称空间 使用类名/对象名点双下dict方法查看。

    新增或修改名称 类名/对象名点变量名赋值。

    生成对象时要求传参 定义类时,使用双下init方法指定形参及赋值规则。

今日内容概要

  • 动态方法及静态方法
  • 类的继承本质
  • 经典类与新式类
  • 类中名称的查找顺序
  • 方法的派生

今日内容详细

动态方法及静态方法

在定义类中的方法时,默认会将将来调用方法的对象作为第一个参数传给方法。

在python中,默认类中所有的方法均为动态方法,即在对象调用方法时,将方法的复制与对象绑定。

若要使用静态方法,需要在定义方法时使用staticmethod装饰器语法糖。这样在将来调用类中该方法时即可自由传入参数,不过类中的方法与自身无关的话在类中的意义就不大了,因此静态方法使用不多。

一般对象在调用类中方法时,无法直接访问类中方法的本体,若要使调用方法时直接访问其本体,要在定义方法时使用classmethod装饰器语法糖。

类的继承本质

一个类想要使用另一个类的功能时,可以使用类的继承,被继承的类通常称作父类,继承其他类的类通常称作子类。子类除了使用父类的名称及功能之外,还可以有自己独有的名称及方法。

父类与子类的关系类似于类与对象的关系。

类的继承最本质的目的是为了节省代码空间。

经典类与新式类

python中定义的类默认为新式类,即在定义时继承了object或其子类。

经典类即在定义时没有继承任何类的类。python2中默认创建的是经典类。

若要在python3中创建经典类,,,,,,

类中名称的查找顺序

没有类的继承时

在没有类的继承时,对象调用某个名称时,若对象内有该名称则使用该名称对应的数据,若对象自身没有,则调用其所属的类的该名称,若其所属的对象内也没有该名称,则报错。

类的单线继承时

在存在类的单线继承时,调用名称的顺序从调用者的层级开始,逐级向其父类查找。

类的多线不收束继承时

此时,按照继承的顺序从左向右查找,若每条线不止一个节点,则该线查找结束后才会去下条线查找。

类的多线且收束继承时

此时,与不收束继承大致相似,唯一区别是最终的收束节点在最后一条支线查找完成后才能抵达。

方法的派生

方法的派生就是利用类的继承,在原方法的基础上,增加个性化的功能,以完成更加复杂的操作。

posted @ 2022-11-03 19:26  Akazukis  阅读(52)  评论(0)    收藏  举报