《python数据分析及其在水利工程中的应用》课件-19⻘出于蓝 - 类的继承_第1页
《python数据分析及其在水利工程中的应用》课件-19⻘出于蓝 - 类的继承_第2页
《python数据分析及其在水利工程中的应用》课件-19⻘出于蓝 - 类的继承_第3页
《python数据分析及其在水利工程中的应用》课件-19⻘出于蓝 - 类的继承_第4页
《python数据分析及其在水利工程中的应用》课件-19⻘出于蓝 - 类的继承_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

站在'巨⼈'的肩膀上⻘出于蓝-

类的继承Thebluesurpassestheblue-Inheritanceofclasses塑造万象-升级任务ShapingAllThings-UpgradeMission世间万物皆可为'模'(

类与对象)。掌握塑造之法,汝便能创造万千'⽔利模型',应对复杂局⾯

。今⽇,汝将学习'⻘出于蓝'之术,即类的继承,此乃创建复杂模型的关键法⻔

。⻓⽼的指引:塑造万象—智水长老升级任务进度TheprogressoftheUpgradetask当前任务任务:⻘出于蓝-类的继承进行中>>>已完成任务任务:万物之模-类与对象基础任务:模型骨⾁-类的属性与⽅法已完成任务:通灵之语-魔术⽅法后续任务待解锁升级任务进度TheprogressoftheUpgradetask当前任务任务:⻘出于蓝-类的继承进行中>>>已完成任务任务:万物之模-类与对象基础任务:模型骨⾁-类的属性与⽅法已完成任务:通灵之语-魔术⽅法后续任务待解锁完成本任务,成为【塑模家】!本课任务:⻘出于蓝-类的继承Thetaskofthislesson:"Thebluesurpassestheblue"-classinheritance任务⽬标理解继承的概念及其在⾯向对象编程中的重要性学习⽗类(基类)与⼦类(派⽣类)

的关系掌握在Python中定义⼦类的语法学会⼦类继承⽗类属性和⽅法的⽤法掌握⽅法重写(

覆盖)

的技巧学习使⽤super()函数调⽤⽗类⽅法理解继承的意义与应⽤场景01第一节继承:站在'巨⼈'的肩膀上Inheritance:Standingontheshouldersofa"giant"什么是继承?Whatisinheritance?继承的好处代码重⽤

:⼦类可以直接使⽤⽗类的代码,⽆需重复编写建⽴层次关系

:反映现实世界中事物之间的"is-a"(

是—种)关系(例如,拱坝是—种⼤坝)易于扩展

:可以在⼦类中添加新的属性和⽅法,或修改(

重写)继承来的⽅法,

以满⾜特定需求继承的概念继承(Inheritance)是⾯向对象编程的三⼤特性之一(

另两个是封装和多态)。它允许—个类(称为⼦类或派⽣类)获取另一个类(称为⽗类、基类

或超类)

的属性和⽅法。⽗类与⼦类

(基类与派⽣类)Parentclassesandchildclasses(baseclassesandderivedclasses)⽗类与⼦类的概念⽗类(ParentClass/BaseClass/Superclass):被继承的类。它提供了通⽤的属性和⽅法。⼦类(ChildClass/DerivedClass/Subclass):继承⾃⽗类的类。它继承了⽗类的所有⾮私有属性和⽅法,并且可以定义⾃⼰独有的属性和⽅法。一个⽗类可以有多个⼦类。继承关系通常是单向的(

⼦类继承⽗类)。02第二节创建⼦类:⻘出于蓝⽽胜于蓝Creatingasubclass:Thebluesurpassestheblue继承示例:创建⼤坝⼦类Inheritanceexample:Createasubclassofthedam#

⽗类Damclass

Dam:def

__init__(self,name,

height):self.name=

nameself.height=

heightself.dam_type="未知类型"#

通⽤属性def

get_basic_info(self):return

f"⼤坝名称

:{self.name},

坝⾼

:

{self.height}

"def

common_function(self):print(f"{self.name}正在执⾏通⽤⼤坝功能

...")#⼦类GravityDam

(继承⾃

Dam)class

GravityDam(Dam):#暂时不添加新内容,但已继承了Dam的所有东⻄pass#⼦类ArchDam

(继承⾃

Dam)class

ArchDam(Dam):#暂时不添加新内容pass继承⽗类的属性和⽅法Inheritthepropertiesandmethodsoftheparentclass#创建⼦类对象dam_gr=GravityDam("三峡⼤坝",185.0)#调⽤的是继承来的__init__dam_ar=ArchDam("⼩湾⼤坝",294.5)#调⽤的是继承来的__init__#访问继承的属性print(f"{dam_gr.name}的⾼度是{dam_gr.height}⽶

")#name和

height

是从

Dam继承的print(f"{dam_ar.name}的类型是{dam_ar.dam_type}")#dam_type也是继承的#调⽤继承的⽅法print(dam_gr.get_basic_info())#调⽤继承的get_basic_info⽅法dam_ar.common_function()#调⽤继承的common_function⽅法⼦类创建后,会⾃动拥有⽗类中定义的所有⾮私有的属性和⽅法:三峡⼤坝的⾼度是

185.0⽶⼩湾⼤坝的类型是未知类型⼤坝名称:三峡⼤坝

,

坝⾼:185

.0

⽶⼩湾⼤坝

正在执⾏通⽤⼤坝功能…输出结果继承⽗类的属性和⽅法Inheritthepropertiesandmethodsoftheparentclass#创建⼦类对象dam_gr=GravityDam("三峡⼤坝",185.0)#调⽤的是继承来的__init__dam_ar=ArchDam("⼩湾⼤坝",294.5)#调⽤的是继承来的__init__#访问继承的属性print(f"{dam_gr.name}的⾼度是{dam_gr.height}⽶

")#name和

height

是从

Dam继承的print(f"{dam_ar.name}的类型是{dam_ar.dam_type}")#dam_type也是继承的#调⽤继承的⽅法print(dam_gr.get_basic_info())#调⽤继承的get_basic_info⽅法dam_ar.common_function()#调⽤继承的common_function⽅法⼦类创建后,会⾃动拥有⽗类中定义的所有⾮私有的属性和⽅法:要点说明⼦类对象可以直接访问从⽗类继承的属性(name,height,dam_type)⼦类对象可以直接调⽤从⽗类继承的⽅法(get_basic_info(),common_function())03第三节⽅法重写:定制⼦类的独特能⼒Methodrewriting:Theuniqueabilitytocustomizesubclasses什么是⽅法重写(Overriding)?Whatismethodrewriting(Overriding)?方法重写的定义如果⼦类定义了一个与⽗类同名的⽅法(

包括参数列表也相同或兼容),那么⼦类的这个⽅法就会覆盖掉从⽗类继承来的同名⽅法。当通过⼦类对象调⽤该⽅法时,执⾏的是⼦类中定义的版本。⽅法调⽤流程示意图Diagramofthemethodinvocationprocess调⽤对象的⽅法执⾏从⽗类继承的⽅法版本执⾏⼦类中的⽅法版本该⽅法在⼦类中是否被重写?是否如何重写⽗类⽅法Howtorewritethemethodsoftheparentclassclass

Dam:def

__init__(self,name,

height):self.name=

nameself.height=

height在⼦类中定义—个与⽗类同名的⽅法即可。def

display_type(self):print("这是—个通⽤类型的⼤坝。

")class

GravityDam(Dam):#重写⽗类的display_type⽅法def

display_type(self):print(f"{self.name}是—个依靠⾃身重量维持稳定的重⼒坝。

")class

ArchDam(Dam):#重写⽗类的display_type⽅法def

display_type(self):print(f"{self.name}是—个利⽤拱形结构将⽔压⼒传递到两岸的拱坝。

")#创建对象dam_g=GravityDam("景洪大坝",108)dam_a=ArchDam("溪洛渡大坝",285.5)dam_generic=Dam("某不知名坝",50)#父类对象#调用display_type方法dam_g.display_type()

#执行GravityDam中重写的版本dam_a.display_type()

#执行ArchDam中重写的版本dam_generic.display_type()

#执行Dam中的原始版本使⽤super()调⽤⽗类⽅法Calltheparentclassmethodusingsuper()super()函数返回—个临时的⽗类对象,允许你调⽤⽗类的⽅法。class

Dam:def

__init__(self,name,

height):print(f"---⽗类Dam初始化开始

:{name}

---")self.name=

nameself.height=

heightprint(f"---⽗类Dam初始化结束

:{name}

---")class

GravityDam(Dam):def

__init__(self,name,height,

concrete_volume):print(f"---⼦类GravityDam初始化开始

:{name}

---")#调⽤⽗类的

__init__⽅法来初始化name和

height#创建GravityDam对象dam_g=GravityDam("向家坝",162,11570000)#这会依次打印⽗类和⼦类的初始化信息print(f"{dam_g.name}的⾼度是{dam_g.height},混凝⼟⽅量是{dam_g.concrete_volume}")#添加⼦类特有的属性self.concrete_volume=concrete_volumeprint(f"添加了重⼒坝特有属性

:混凝⼟⽅量{self.concrete_volume}")print(f"---⼦类GravityDam初始化结束

:{name}

---")04第四节继承的意义:构建⽔利模型的层级Thesignificanceofinheritanc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论