Python——Day8面向对象基础(中)

1、析构方法

析构方法的概述
当一个对象被删除或者被销毁时,python解释器也会默认调用一个方法,这个方法为__ del __ () 方法,也称为析构方法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、单继承

在python中展现面向对象的三大特征:封装、继承、多态
封装:指把内容封装到某个地方,便于以后使用;需要把内容封装到某个地方,从另外一个地方去调用被封装的内容;对于封装来说,其实就是使用初始化构造方法将内容封装到对象中,然后通过对象直接或self间接获取被封装的内容
继承:和现实生活当中的继承是一样的,即子类可以继承父类的内容(属性和行为),爸爸有的儿子都有,儿子有的爸爸不一定有

对于面向对象的继承来说,其实就是将多个类共有的方法提取到父类中,子类仅需要继承父类而不必一一实现每个方法,这样就可以极大的提高效率,减少代码的重复编写,精简代码的层级结构,便于扩展

class 类名(父类):
    '''
    子类就可以继承父类中公共的属性和方法
    '''
    pass

在这里插入图片描述
在这里插入图片描述

3、多继承

子类可以继承多个父类
在这里插入图片描述
在这里插入图片描述
问题:当多个父类中存在相同方法时,应该去调用哪个?
在这里插入图片描述
__ mro __ 方法解析顺序
功能:查找执行顺序
描述:方法的执行顺序可以用 __ mro __ 查看

4、继承的传递

类的传递过程中,我们把父类又称为基类,子类又称为派生类,父类的属性和方法可以一级一级的传递到子类
在这里插入图片描述

5、重写父类方法

所谓重写,就是子类中,有一个和父类相同名字的方法,在子类中的方法会覆盖掉父类中同名的方法
在这里插入图片描述
为什么要重写,父类的方法已经不满足子类的需要,那么子类就可以重写父类或者完善父类的方法

6、调用父类方法

在这里插入图片描述
在这里插入图片描述

7、多态

所谓多态:定义时的类型和运行时的类型不一样,此时就称为多态
Python不支持Java和C#这一类强类型语言中多态的写法,Python崇尚“鸭子类型”,利用Python伪代码实现Java和C#的多态
多态:顾名思义就是多种形态、状态,就是同一种行为对于不同的子类【对象】有不同的行为表现
要想实现多态,必须有两个前提条件:1、继承:多态必须发生在父类和子类之间;2、重写:子类重写父类的方法
在这里插入图片描述
在这里插入图片描述
多态作用:增加程序的灵活性,增加程序的扩展性
在这里插入图片描述

8、类属性和实例属性

类属性:就是类对象所拥有的属性,它被所有类对象的实例对象所共有,类对象和实例对象可以访问
实例属性:实例对象所拥有的属性,只能通过实例对象访问
在这里插入图片描述
类属性是可以被类对象和实例对象共同访问使用的
实例属性只能由实例对象所访问
类对象不能访问实例属性

类属性和实例属性的访问原理
类属性类对象可以访问,实例对象也可以访问,这与内存中保存的方式有关
在这里插入图片描述
从上图中可以看出,所有实例对象的类对象指针指向同一类对象。实例属性在每个实例中独有一份,而类属性是所有实例对象共有一份
在这里插入图片描述
在这里插入图片描述

9、类方法和静态方法

类方法的概念
类对象所拥有的方法,需要用装饰器@classmethod来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以cls作为第一个参数,类方法可以通过类对象、实例对象调用
在这里插入图片描述
类方法主要可以对类属性进行访问、修改
在这里插入图片描述
静态方法的概念
类对象所拥有的方法,需要用@staticmethod来表示静态方法,静态方法不需要任何参数
在这里插入图片描述
由于静态方法主要来存放逻辑性的代码,本身和类以及实例对象没有交互,也就是说,在静态方法中,不会涉及类中方法和属性的操作,数据资源能够得到有效的充分利用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
从方法定义的形式可看出,类方法的第一个参数是类对象cls,进而去引用类对象的属性和方法,必须用装饰器@classmethod来修饰;实例方法的第一个参数必须是self,通过这个self可以去引用类属性或者实例属性,若存在相同名称实例属性和类属性的化,实例属性的优先级最高;静态方法不需要定义额外的参数,若要引用属性的话,则可以通过类对象或者是实例对象去引用即可,必须用装饰器@staticmethod来修饰

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值