《Python编程基础》课件-项目1:面向对象编程_第1页
《Python编程基础》课件-项目1:面向对象编程_第2页
《Python编程基础》课件-项目1:面向对象编程_第3页
《Python编程基础》课件-项目1:面向对象编程_第4页
《Python编程基础》课件-项目1:面向对象编程_第5页
已阅读5页,还剩26页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

面向对象基础教学目标1.了解什么是面向对象编程2.掌握类和对象的区别3.学习定义一个简单的类4.掌握实例化对象5.掌握类中的属性和方法面向对象编程(OOP)是一种编程范式,将程序组织成对象的集合,这些对象包含数据(属性)和行为(方法)。在Python中,OOP强调代码的可重用性、可扩展性和模块化,从过程式编程过渡到更结构化的方法。核心概念:OOP的三大支柱是封装、继承、多态。OOP模拟现实世界,例如将“汽车”建模为类,包含属性如颜色和速度,以及方法如加速。Python支持完整的OOP特性,包括类定义和实例化。1、什么是面向对象编程

#一个简单的类定义示例classDog:#使用class关键字定义类,类名通常大写开头"""这是一个狗类的文档字符串,描述类的用途。"""#类文档字符串defbark(self):#方法定义,self参数表示实例本身print("Woof!")#方法体,输出叫声类是对象的模板或蓝图,而对象是类的实例,具有具体的状态和行为。核心概念:在OOP中,类定义共享特性(如属性和方法),对象则有独特的值(如不同的颜色)。这促进代码复用,例如一个Dog类可以创建多个狗对象。理解这个区别是OOP的基础,避免将类视为函数。Python中,一切皆对象,包括类本身。2.类和对象的区别

classCar:#类定义def__init__(self,color):#构造函数,初始化属性self.color=color#实例属性,使用self访问#创建对象my_car=Car("red")#实例化类,传入参数print(my_car.color)#访问对象属性,输出:red定义类使用class关键字,后跟类名和冒号。核心概念:类可以包含方法(函数)和属性(变量)。构造函数__init__用于初始化对象状态。练习创建简单类来理解OOP的起点,例如信息系统。注意:Python支持动态属性,但推荐在__init__中定义以提高可读性。3.定义一个简单的类

classStudent:#类定义def__init__(self,name,age):# 构造函数,接收参数=name#实例属性:

姓名self.age=age#实例属性:

年龄defintroduce(self):#实例方法print(f"Iam{},{self.age}yearsold.")#使用self访问属性实例化是通过调用类名如函数来创建对象的过程。核心概念:对象创建时调用__init__方法,传入参数设置初始状态。每个对象有独立的内存空间,避免共享状态导致的错误。这在OOP中实现数据隔离。可以想象对象如现实中的实例,例如不同颜色的汽车。4.实例化对象classBook:#类定义def__init__(self,title):#初始化标题self.title=title#设置属性#实例化book1=Book("PythonBasics")#创建第一个对象book2=Book("AdvancedOOP")#创建第二个对象print(book1.title)#输出:PythonBasics属性是对象的数据,方法是对象的行为。核心概念:属性分为实例属性(每个对象独特)和类属性(所有对象共享)。方法使用self参数访问实例。属性可以是公有或私有(使用_或__前缀)。这奠定OOP数据和逻辑分离的基础。5.类中的属性和方法继承允许子类从父类获取属性方法,促进复用。在Python中,用classChild(Parent):定义。子类可扩展或覆盖,实现层次结构。核心概念:继承建立继承,减少重复代码。6.什么是继承#继承介绍classAnimal:#父类defeat(self):#方法print("Eating")classDog(Animal):#子类defbark(self):#新方法print("Barking")d=Dog()#实例d.eat()#输出:Eating将数据(属性)

和操作数据的方法

捆绑在一个类中,形成一个独立的封装体。核心概念:对外隐藏内部的实现细节,只暴露有限的“接口”供外部使用,避免外部直接修改内部数据导致错误。实例属性的封装通过私有化来实现。7.什么是封装小结1.面向对象编程是一种将程序组织成对象集合的编程范式,强调代码的可重用性、可扩展性和模块化2.类是对象的模板,对象是类的实例,具有具体的状态和行为3.类的定义包括方法和属性,通过构造函数__init__初始化对象状态4.实例化对象通过调用类名并传入初始参数,每个对象具有独立的内存空间面向对象进阶教学目标1.了解什么是继承2.掌握单继承和多继承3.了解方法解析顺序的概念和应用4.理解多态的定义5.掌握方法覆盖的技术继承允许子类从父类获取属性和方法,促进代码复用。核心概念:在Python中,使用classChild(Parent):定义子类。子类可以扩展或覆盖父类行为。这是OOP的核心,减少重复代码,例如动物类继承到狗类。注意方法解析顺序(MRO)在多继承中。1、什么是继承?classAnimal:#父类defeat(self):#父类方法print("Eating...")classDog(Animal):#子类继承Animaldefbark(self):#子类新方法print("Woof!")单继承是子类只有一个父类的情况。核心概念:子类自动继承父类所有公有成员。可以使用super()调用父类方法。适合简单层次,如形状类到圆类。构建层次化模型。2.单继承示例

classPerson:#父类def__init__(self,name):#初始化=nameclassStudent(Person):#子类def__init__(self,name,grade):#扩展初始化super().__init__(name)#调用父类构造函数self.grade=grade#新属性多继承允许子类有多个父类。核心概念:Python使用C3线性化算法确定方法解析顺序(MRO),可用Class.__mro__查看。这在进阶OOP中用于混合功能,如日志和计算类。3.多继承和MRO

classA:#父类Adefmethod(self):print("A")classB:#父类Bdefmethod(self):print("B")classC(A,B):#多继承passC().method()#输出:A,根据MRO多态允许不同类的对象以相同方式响应相同方法调用。核心概念:通过继承实现,子类覆盖父类方法。促进灵活性,如统一处理形状列表。这是OOP的强大特性,简化接口。4.多态介绍classShape:#父类defarea(self):#抽象方法passclassRectangle(Shape):#子类def__init__(self,w,h):self.w,self.h=w,hdefarea(self):returnself.w*self.h#覆盖方法覆盖是子类重新定义父类方法。多态在运行时决定调用哪个版本。核心概念:用于接口一致性,如不同动物发声。5.方法覆盖和多态应用classBird(Animal):defsound(self):print("Chirp")classCat(Animal)::defsound(self):print("Meow")defmake_sound(animal):animal.sound()#多态调用make_sound(Bird())#输出:Chirpstr__返回用户友好字符串,repr__返回开发者表示。在Python中,print调用__str,repr()调用__repr。核心概念:__str__用于显示,__repr__用于调试。6.__str__和__repr__方法#__str__和__repr__classUser:#类def__init__(self,name):#初始化=namedef__str__(self):#用户字符串returnf"User:{}"def__repr__(self):#开发者表示returnf"User({!r})"u=User("Alice")#实例print(u)#输出:User:Alice类方法用@classmethod装饰,接收cls;静态方法@staticmethod无self/cls。在Python中,类方法用于工厂,静态用于工具。核心概念:类方法访问类状态,静态独立。7.类方法和静态方法#类和静态方法classMath:#类@classmethoddeffrom_list(cls,lst):#类方法returncls(sum(lst))@staticmethoddefadd(a,b):#静态方法returna+bprint(Math.add(1,2))#输出:3小结1.继承允许子类获取父类的属性和方法,促进代码复用2.单继承和多继承展示了如何在Python中构建层次化的类结构3.多态通过方法覆盖允许不同类的对象响应相同的方法调用4.方法覆盖和多态的应用提高了代码的灵活性和可维护性面向对象高阶教学目标1.掌握

封装原理

2.掌握抽象类和接口

3.了解property装饰器和getter/setter

4.了解魔法方法

5.了解OOP设计模式封装隐藏内部实现,只暴露必要接口。核心概念:在Python中使用_(保护)或__(私有)前缀实现名称改写。getter/setter控制访问。这提高安全性和维护性,如银行账户隐藏余额细节。1、封装原理classBankAccount:#类定义def__init__(self,balance):self.__balance=balance#私有属性defdeposit(self,amount):#方法访问私有self.__balance+=amountproperty装饰器创建托管属性,实现getter/setter。核心概念:允许属性访问如变量,但添加逻辑,从而实现封装。2.property装饰器和getter/setter

classTemperature:#类定义def__init__(self,celsius):self._celsius=celsius@propertydeffahrenheit(self):#getterreturnself._celsius*1.8+32@fahrenheit.setterdeffahrenheit(self,value):#setterself._celsius=(value-32)/1.8抽象类定义必须实现的模板,使用abc模块。核心概念:抽象方法无实现,子类必须覆盖。模拟接口,如形状必须有area方法。这强制设计一致性。3.抽象类和接口

fromabcimportABC,abstractmethod#导入abcclassShape(ABC):#抽象基类@abstractmethoddefarea(self):pass#抽象方法classSquare(Shape):#实现子类def__init__(self,side):self.side=sidedefarea(self):returnself.side**2魔法方法如__init__、str__自定义对象行为。核心概念:允许对象支持运算符重载,如__add。这使类更像内置类型,如自定义向量加法。4.魔法方法classVector:#类定义def__init__(self,x,y):self.x,self.y=x,ydef__add__(self,other):#加法重载returnVector(self.x+other.x,self.y+other.y)def__str__(self):#字符串表示returnf"Vector({self.x},{self.y})"设计模式是常见问题的可重用解决方案,如单例、工厂。核心概念:在Python中,单例确保唯一实例,使用__new__实现。在项目中使用,如配置管理。这是高阶OOP的应用。5.OOP设计模式简介classSingleton:#单例模式_instance=Nonedef__new__(cls):#控制实例创建ifcls._instanceisNone:cls._instance=super().__new__(cls)returncls._instance装饰器动态添加行为,使用类包装对象。在Python中,类似函数装饰器但用于对象。核心概念:装饰器扩展而不修改原类。6.装饰器模式在OOP中应用#装饰器模式classComponent:#基类

温馨提示

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

评论

0/150

提交评论