Pyth基础实及其教程 2_第1页
Pyth基础实及其教程 2_第2页
Pyth基础实及其教程 2_第3页
Pyth基础实及其教程 2_第4页
Pyth基础实及其教程 2_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

Python基础与应用主讲:TheIntroductionandApplicationofPythonPart6第六章06面向对象程序设计Object-OrientedProgramming学习内容4.1控制结构简介06面向对象程序设计Object-OrientedProgramming第一节面向对象编程概述什么是面向对象程序设计(OOP)面向对象程序设计的核心思想在于将现实世界中的事物抽象为程序中的“对象”。这些对象既包含描述其特征的数据(属性),也包含操作这些数据的行为(方法)。这种思想符合人类认识世界的自然方式,例如我们将汽车、房屋、城市看作独立对象,它们各自拥有独特的属性和行为。图:城市对象的属性与方法抽象示例核心特征:抽象(Abstraction)|封装(Encapsulation)|继承(Inheritance)|多态(Polymorphism)代码示例:定义一个城市类classCity:

def__init__(self,name,population):

=name#属性:城市名称

self.population=population#属性:人口数量

defget_desc(self):

returnf"{}的人口为{self.population}"beijing=City("北京市",40000);hohhot=City("呼和浩特市",10000)print(beijing.get_desc());print(hohhot.get_desc())运行输出结果北京市的人口为40000呼和浩特市的人口为10000面向对象编程核心:封装属性与方法,通过实例化对象实现代码复用与逻辑解耦Python实现代码面向对象vs面向过程面向过程编程(Procedure-Oriented)核心思想:将程序看作一系列顺序执行的步骤或过程。主要特点:数据与函数分离,结构清晰,执行效率高。局限性:代码难以维护,重用性低,抽象能力有限。面向对象编程(Object-Oriented)核心思想:将数据和操作数据的方法封装在对象中。主要特点:通过封装、继承、多态实现代码重用和扩展。核心优势:更好的代码组织,更高的可维护性和可扩展性。图示:面向过程与面向对象的编程模型对比面向对象的三大核心特性封装(Encapsulation)将数据和方法绑定,形成独立单元。隐藏细节,暴露接口,实现信息隐藏。继承(Inheritance)基于现有类创建新类,复用属性方法。支持层次化设计,体现“是一种”关系。多态(Polymorphism)不同对象对同一消息做出不同响应。实现“一个接口,多种实现”,灵活扩展。4.1控制结构简介06面向对象程序设计Object-OrientedProgramming第二节类与对象面向对象编程基础·核心概念解析类的定义与创建类(Class)是创建对象的模板或蓝图。它定义了对象拥有的属性(数据)和方法(行为)。在Python中,我们使用class关键字来定义一个类。class

ClassName:"""类的文档字符串"""#属性定义#方法定义类(图纸)与对象(房屋)的关系核心思想:类是抽象的概念(图纸),对象是具体的实例(房子)。对象的实例化核心概念对象(Object)是类的具体实例(Instance)。创建对象的过程称为实例化。每个对象都拥有类定义的属性和方法,但可以有不同的属性值。代码示例(Python)#创建Book类的实例book1=Book("Python编程","张三")book2=Book("Java编程","李四")示例中,book1和book2是两个独立的实例,拥有相同的属性结构但不同的值。类比理解:类是建筑图纸(模板),对象是根据图纸盖好的房子(具体实例)。属性与方法属性(Attribute)对象的状态数据,描述对象的特征。访问:对象.属性名示例:book1.title方法(Method)对象的行为,操作对象数据的函数。调用:对象.方法名()示例:book1.display()关键概念:self参数方法的第一个参数通常是self,它代表对象本身,用于在方法内部访问对象的属性和方法。构造方法__init__核心作用Python中的构造方法,在创建对象时会自动调用,用于初始化对象的属性,为对象赋予初始状态。self参数必须作为方法的第一个参数,它指向新创建的对象实例,通过self可以访问对象的属性和方法。book.pyclass

Book:def

__init__(self,title,author):self.title=title#初始化属性self.author=author#创建对象时自动调用book=

Book("Python编程","张三")4.1控制结构简介06面向对象程序设计Object-OrientedProgramming第三节类封装、继承与多态面向对象编程核心特性解析封装:信息隐藏与接口设计封装的核心是信息隐藏,即对象的内部状态对外部不可见,外部只能通过对象提供的公共方法来访问或修改状态。私有属性(Private)在Python中,通过在属性名前加下划线(如_name)来约定为私有属性,表示不建议外部直接访问。公共方法(Public)提供getter和setter方法来安全地访问和修改私有属性,控制数据流向。核心价值:保护数据不被随意修改,同时提供了清晰的接口,极大地增强了代码的安全性和可维护性。继承:代码复用与扩展核心概念继承是面向对象编程的核心特性之一,允许基于已有的父类(基类)创建新的子类(派生类)。子类自动获取父类的属性和方法,并可进行:扩展:添加新的属性或方法重写:修改父类已有的方法实现inheritance.pyclass

Person:

#父类

def

__init__(self,name):

=name

def

greet(self):

return

f"Hi,{}"class

Student(Person):#继承Person

def

study(self):

return

f"{}isstudying"s=Student("Alice")print(s.greet())#调用继承的方法核心价值:通过继承,Student类无需重复编写name属性和greet方法,直接复用Person类的代码,极大提高开发效率。多继承与方法解析顺序(MRO)多继承特性Python支持子类继承多个父类,极大提升了代码复用性。但当多个父类存在同名方法时,会引发“菱形问题”等方法名冲突。MRO解析原则MRO定义了解释器查找方法的顺序。遵循“深度优先,从左到右”原则,并通过C3线性化算法保证继承关系的一致性,避免二义性。实践查看方法在代码中,可以通过以下两种方式查看类的MRO:1.类名.__mro__2.类名.mro()理解MRO是掌握Python面向对象编程中复杂继承关系的关键多态:一个接口,多种实现多态允许不同类的对象对同一消息(方法调用)做出不同的响应。这通常通过方法重写(MethodOverriding)来实现,极大地提高了代码的灵活性。class

Animal:

def

speak(self):

passclass

Dog(Animal):def

speak(self):

return"Woof!"class

Cat(Animal):def

speak(self):

return"Meow!"def

make_speak(animal):

print(animal.speak())make_speak(Dog())#输出:Woof!此外,Python还支持运算符重载(OperatorOverloading),通过实现特殊方法(如__add__,__str__)来自定义对象的行为,进一步扩展了多态的应用场景。Python中面向对象的独特实现一切皆对象:数字、字符串、函数、类本身都是对象,具有统一的访问接口。特殊方法:通过双下划线方法(如__init__,__str__)自定义对象行为与运算符。动态性:运行时可动态为类或对象添加属性和方法,灵活性极高。属性访问控制:无严格私有属性,通过约定俗成的命名规范(如_attr)实现约束。元类:控制类的创建过程,是Python中实现高级框架和API的核心机制。为什么要学习面向对象编程现代软件工程的支柱主流开发框架(如Django,Flutter)均基于OOP设计,是行业标准。提高代码可维护性与扩展性通过封装、继承和多态特性,有效管理复杂度,降低维护成本。提升抽象编程思维培养抽象、分解和建模能力,帮助我们更好地解决复杂现实问题。Python的强大支持Python的OOP特性简洁且强大,语法糖丰富,是入门和实践的理想语言。综合案例:图书管理系统通过Python实现一个简易的图书管理系统,展示类定义、对象交互与业务逻辑封装。class

Book:

def

__init__(self,title,author,isbn):

self.title=title

self.author=author

self.isbn=isbn

self.is_borrowed=Falsedef

borrow(self):#借书逻辑封装

ifnot

self.is_borrowed:

self.is_borrowed=True

returnTrue

returnFalselib=Library();lib.add_book(Book("Python编程","张三","123456"))#对象交互类与对象定义Book类封装属

温馨提示

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

最新文档

评论

0/150

提交评论