深入解析:面向对象基础(封装)和 面向对象高级(继承以及多态)
1.面向对象和面向过程
①面向对象
注重对象 --- 找一个专业的人干
②面向过程
注重步骤 --- 自己一步步干
2.类和对象概念
①类:
是一类事物的统称,是一个抽象的概念
②对象
是类的具体体现,是一个看得见摸得着的实体
③关系
先有类,再根据类创建多个对象
3.类和 对象Python执行
①定义类
class类名(object):
成员属性:本质是特殊的变量
成员方法:本质是特殊的函数
②创建对象
对象名 =类名()
③self关键字
指代对象自己,谁调用self所在的方法,self就代表谁
④对象调用成员途径
对象名.成员手段名()
⑤对象调用成员属性
对象名.成员属性名()
⑥成员属性的添加和获取
1.类外
添加:
对象名.成员属性名 = 值
获取:
对象名.成员属性名
2.类内
添加:
self.成员属性名 = 值
获取:
self.成员属性名
4.魔法技巧
格式:
_ _方法名_ _()
魔法之处:在不同时机下自动调用
常用的魔法方法:
1._ _init_ _()
在初始化对象时自动调用
2._ _str_ _()
在打印对象名时自动调用
3._ _del_ _()
在删除对象时自动调用
5.私有属性
1.私有属性
_ _属性名
2.私有方法
_ _方法名
6.什么是封装
1.把属性和方法放到类中,通过对象访问即可
2.把属性和方法放到类中,并且添加私有权限,对外献出公共的访问接口
二.面向对象高级
1.继承
①什么是继承
一个类自动拥有了另一个类的公有属性和方法,那么这就一定应用了继承
②继承的好处
代码复用性更强,同时也能实现层次开发
2.核心概念
①继承:
一个类从另一个已有的类获得其他成员相关特性,就叫做继承
②派生:
从一个已有的类产生新生的类,叫做派生
③父类:
也叫做基类,指已有被继承的类
④子类:
叫做派生类或扩展类
⑤扩展:
在子类中增加一些自己特有的特性,叫做扩展,没有扩展,继承也将失去意义
⑥单继承:
一个类只能继承一个其他类,不可继承多个,也是大多数面向对象语言的特性
⑦多继承:
一个类同时继承多个类
⑧注意:
父子孙层级关系就是多继承和多层继承不一样,多层继承说的
3.单继承的格式
class子类名(父类名):
pass
4.多继承的格式
class子类名(父类名1,父类名2):
pass
5.有继承关系后知识点:
1.重写
①重新编写从父类继承下来的方法
②重写后子类如果调用的有和父类同名的方法,默认优先访问的时子类自己的
2.重写后如何调用父类的同名办法
①super(当前子类名.self)父类技巧名()
②父类名.父类方法名(self)
优势:
灵活,任意父类的同名方法都能够访问
3.方法查找顺序
①_ _mro_ _属性
②mro()方法
三.多态
1.什么是多态,以及多态的好处
多态就是①什么
同种事物的不同形态
②多态的好处
扩展性强,灵活性强
2.多态必须满足的条件
①有继承
②有重写
③有父类引用指向子类对象
3.Python伪多态
①是其动态特性和鸭子类型环境的体现
②Python由于缺乏编译时的类型检查和强制接口约束,被称为伪多态
③拓展:
1.类型声明:
途径名(变量名:类型名)
2.类型判断:
isinstance(对象类型)
四.补充封装的内容
1.类属性
1.在类中方法外定义的属性,就是类属性
2.类属性和成员属性的区别
1.定义位置不同
①类属性定义在类中的手段外 类名.类属性名 = 初始值
②实例属性经过对象或者self定义
1.对象名.实例属性名 = 初始值
2.self.实例属性名 = 初始值
2.所属对象不同
①类属性属于整个类,这个类创建的所有对象都能访问
②实例属于每个对象自己
3.修改访问不同
①类属性修改使用:
类名.类属性名 = 新值
2.类方法@classmethod
1.类技巧主要就是为了间接访问 类属性使用的
2.类方法和成员方法的区别
①定义方式不同
1.类方法时需要添加@class method
2.实例方法直接定义即可
②第一个形参不同
1.类方法的第一个形参是:cls
2.既不要cls,也不要self
③相同点
都可以直接使用类名调用
浙公网安备 33010602011771号