1 / 7
文档名称:

Python-图文课件12.pptx

格式:pptx   大小:4,363KB   页数:7页
下载后只包含 1 个 PPTX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Python-图文课件12.pptx

上传人:可爱的嘎嘎 9/20/2022 文件大小:4.26 MB

下载得到文件列表

Python-图文课件12.pptx

相关文档

文档介绍

文档介绍:该【Python-图文课件12 】是由【可爱的嘎嘎】上传分享,文档一共【7】页,该文档可以免费在线阅读,需要了解更多关于【Python-图文课件12 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。第十二章
封装、继承和多态
封装
使用slots
控制实例变量
保证封装完整性
权限控制
两个下划线开头的实例属性不能被直接访问和控制,叫做私有属性
访问和修改私有属性应该用getter和setter
有利于代码的封装
classBook:
def__init__(self):
=0
=1#私有属性
=0#私有属性
defget_price(self):#getter

defset_price(self,price):#setter
=price
def__stock(self):#这是一个私有方法
==0:
print('outofstock')
defget_stock(self):#getter
print('checkingstock')
()#可以在类内部访问私有方法
继承
父类和子类
父类又名基类,被继承的类
子类又名派生类,继承父类的类
父类和子类是相对而言的
所有的对象都隐式继承了object
一个类可以有一个或者多个父类
classVehicle:
def__init__(self,car_name='',speed=0):
=car_name
=speed
=list()
defload_passengers(self,new_passengers):
(new_passengers)
classCar(Vehicle):#注意这里加了一个括号表明父类是Vehicle
def__init__(self,car_name='',speed=0,horse_power=100):
super().__init__(car_name=car_name,speed=speed)#super就是父类,后面会讲到
=horse_power#特性
('driver')
car=Car(car_name='alto')
print()
继承
父类属性和方法
继承实际上是在子类中提供了一份父类的拷贝
对于父类来说,子类也是外界,所以私有属性和私有方法的权限控制对子类同样有效
#由于篇幅原因Vehicle类的定义省略,具体定义见书
classCar(Vehicle):
def__init__(self,car_name='',speed=0,horse_power=100):
super().__init__(car_name=car_name,speed=speed)
=horse_power
('driver')
defget_id_directly(self):
print()
defprint_id_directly(self):
()
car=Car(car_name='alto')
#下面这两行都会报错
#print(())
#print(())
继承
覆盖父类方法
父类的方法不足以表达子类特性
子类可以重写覆盖父类同名方法
调用父类方法
使用super来访问父类方法
使用super还可以在类的外部调用已经被覆盖的父类方法
classVehicle:
def__init__(self,car_name='',speed=0):
=car_name
=speed
=list()
=+1
+=1
defadd_gas(self):
print('pleaseadd92#')
classBike(Vehicle):
defadd_gas(self):#这里覆盖了父类的方法
print('nogasrequired')
classCar(Vehicle):
def__init__(self,car_name='',speed=0,horse_power=100):
super().__init__(car_name=car_name,speed=speed)#这里调用了父类的初始化函数
=horse_power
('driver')
多态
根据类型不同自动调用同名的不同方法
Python中变量是动态类型的
其实是一种“DuckingTyping”思想
有时候甚至可以脱离继承模型
有一定降低可读性的风险
一个典型的例子是__str__
defmy_add_gas(v:Vehicle):
()
my_add_gas(car)
my_add_gas(bike)
pleaseadd92#
nogasrequired
小结
面向对象的三大特征:封装、继承和多态
封装就是把和一个类相关的属性和行为封装在一起
继承反映了客观世界中对象的普遍关系
多态为Python面向对象提供了非常灵活的使用方式