Python程序设计基础 课件 项目9 面向对象的程序设计_第1页
Python程序设计基础 课件 项目9 面向对象的程序设计_第2页
Python程序设计基础 课件 项目9 面向对象的程序设计_第3页
Python程序设计基础 课件 项目9 面向对象的程序设计_第4页
Python程序设计基础 课件 项目9 面向对象的程序设计_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

程序设计基础——面向对象的程序设计简单易学易读易维护开源

可移植性

可扩展性

丰富的库

Python思政导入一个从普通技校毕业,29岁成为航空高级技师,39岁打破被国外长期垄断的金刚石滚轮加工技术,被誉为“大国工匠”,获得国家800万元的现金奖励。他的这项技术突破至少为国家节省了9000多万的外汇支出。他不仅参与了辽宁舰舰载机等多项国家重点航空发动机的科研项目,还拥有7项国家发明专利和实用新型专利,他的名字叫洪家光。目录CONTENTS面向过程和面向对象的区别01面向对象的基本特征02创建类和对象03使用构造器创建实例变量04类的继承05类的私有变量和私有方法04类的属性方法05面向过程和面向对象的区别01一、面向过程和面向对象的区别面向过程侧重的是怎么做,也就是怎么做能把需求完成,通常我们会把完成一个需求的所有步骤从头到尾逐步实现,在开发过程中,会根据开发需求,将某些功能独立的代码封装成一个或几个函数。最后完成的代码,就是顺序地调用不同的函数。在开发复杂项目时就需要使用面向对象的开发方式,这种方式的侧重的是谁来做。其中,“谁”就面向对象中的对象。一、面向过程和面向对象的区别和之前面向过程的开发方式相比,面向对象的开发方式不存在之前函数调用时你中有我,我中有你的情况,各个对象要做什么是非常明确的,很少出现相互调用的情况。因此,面向对象的开发方式适合开发复杂的项目。向日葵豌豆射手普通僵尸路障僵尸生命值生命值生命值生命值路障生产阳光()摇摆()发射豌豆()移动()咬()移动()咬()表9-1植物大战僵尸对象中的方法面向对象的基本特征02二、面向对象的基本特征类(Class):

用来描述具有相同的属性和方法的对象的集合。类就是把一类具有共同属性的事物封装到一起,不用重复编写程序,只需调用相应的类即可。类定义了该集合中每个对象所共有的属性和方法。对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。类和对象的关系:类就相当于是模板,对象是根据类这个模板创建出来的。类只有一个,而对象可以有多个。不同的对象之间属性可能会各不相同,比如生产同一款汽车,但是汽车的颜色是可以不一样的。类中定义了什么属性和方法,那么对象中就有什么属性和方法,不可能多,也不可能少。二、面向对象的基本特征方法:类中定义的函数。实例化:创建一个类的实例,类的具体对象。类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。数据成员:类变量或者实例变量,用于处理类及其实例对象的相关的数据。方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。局部变量:定义在方法中的变量,只作用于当前实例的类。实例变量:在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。继承:即一个派生类(derivedclass)继承基类(baseclass)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。创建类和对象033、怎么才能学好Python安全编程?要设计一个类,通常需要满足三个要素:类名:这类事物的名字,满足大驼峰命名法。也就是每个单词的首字母要大写,单词与单词之间没有下划线。属性:这类事物具有的特征。方法:这类事物具有的行为。2、为什么要学习Python?三、创建类和对象1.类名的确定通过分析整个业务流程,找到出现的名词,通常这就是类名。2.属性和方法的确定对对象的特征描述,通常可以定义成属性。对象具有的行为一般是用动词来表达的,通常可以定义成方法。例如:小丽今年20岁,身高1.67米,每天早上跑完步后去吃早餐。小明今年21岁,身高1.85米,他不喜欢跑步,经常不吃早餐。Personnameagerun()eat()3、怎么才能学好Python安全编程?例如:一只黑色的狗叫仔仔,看见陌生人就会大叫,看见家人就摇尾巴。2、为什么要学习Python?三、创建类和对象Dognamecolorshout()shake()3、怎么才能学好Python安全编程?3.定义简单的类类定义与函数定义(def语句)一样必须被执行才会起作用。使用class语句来创建一个新类,class之后为类的名称并以冒号结尾,语法格式如下:classClassName:<statement-1>...<statement-N>2、为什么要学习Python?三、创建类和对象3、怎么才能学好Python安全编程?例:一只黑色的狗叫仔仔,看见陌生人就会大叫,看见家人就摇尾巴。classDog:<statement-1>...<statement-N>2、为什么要学习Python?三、创建类和对象3、怎么才能学好Python安全编程?4.定义只包含方法的类在Python中要定义一个只包含方法的类,语法格式如下:classClassName:def方法1(self[,参数列表]):passdef方法2(self[,参数列表]):pass2、为什么要学习Python?三、创建类和对象classDog:defshout(self):print('汪汪汪')defshake(self):print('摇尾巴')3、怎么才能学好Python安全编程?5.创建对象当一个类定义完成之后,要使用这个类来创建对象,语法格式如下:对象变量=类名()要访问类中定义的方法,首先要创建对象,也就是实例化类,然后再使用对象变量.方法的方式进行访问。2、为什么要学习Python?三、创建类和对象classDog:defshout(self):print('汪汪汪')defshake(self):print('摇尾巴')#创建狗对象p=Dog()p.shake()p.shout()示例:一只黑色的狗叫仔仔,看见陌生人就会大叫,看见家人就摇尾巴。运行结果:摇尾巴汪汪汪3、怎么才能学好Python安全编程?在Python中使用类创建对象后,对象变量p中保存的是对象在内存中的地址,也就是p变量引用了新建的狗对象。使用print输出对象变量时,将输出这个变量引用对象在内存中的地址。2、为什么要学习Python?三、创建类和对象classDog:defshout(self):print('汪汪汪')defshake(self):print('摇尾巴')#创建狗对象p=Dog()p.shake()p.shout()print(p)示例:一只黑色的狗叫仔仔,看见陌生人就会大叫,看见家人就摇尾巴。运行结果:摇尾巴!汪汪汪!<__main__.Dogobjectat0x00000200F4240E50>3、怎么才能学好Python安全编程?6.给对象增加属性在Python中,要给对象设置属性,可以使用对象变量.属性的方法,这种方法虽然十分简单,但是不推荐使用。2、为什么要学习Python?三、创建类和对象classDog:defshout(self):print('汪汪汪')defshake(self):print('摇尾巴')#创建狗对象p=Dog()='仔仔'p.shake()p.shout()print(p)示例:一只黑色的狗叫仔仔,看见陌生人就会大叫,看见家人就摇尾巴。运行结果:摇尾巴!汪汪汪!<__main__.Dogobjectat0x000002650BE20E50>3、怎么才能学好Python安全编程?6.给对象增加属性在Python中哪一个对象调用的方法,那么.self就是哪一个对象的引用。2、为什么要学习Python?三、创建类和对象classDog:defshout(self):print(f'{}汪汪汪')defshake(self):print(f'{}摇尾巴')#创建狗对象p=Dog()='仔仔'p.shake()p.shout()示例:一只黑色的狗叫仔仔,看见陌生人就会大叫,看见家人就摇尾巴。运行结果:仔仔摇尾巴仔仔汪汪汪3、怎么才能学好Python安全编程?7.类中增加类变量类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。要使用类中的类变量,可以使用对象变量名.类变量的方法。2、为什么要学习Python?三、创建类和对象classDog:name='仔仔'#类变量color='黑色'defshout(self):return'汪汪汪'defshake(self):return'摇尾巴'#创建狗对象p=Dog()print(f'一只{p.color}的狗叫{},看见陌生人就会{p.shout()},看见家人就{p.shake()}。')示例:一只黑色的狗叫仔仔,看见陌生人就会大叫,看见家人就摇尾巴。运行结果:一只黑色的狗叫仔仔,看见陌生人就会汪汪汪,看见家人就摇尾巴。使用构造器创建实例变量043、怎么才能学好Python安全编程?1.创建多个实例化使用类可以创建多个实例化对象,通过print输出这两个对象,观察这两个对象在内存中的地址是否相同。2、为什么要学习Python?四、使用构造器创建实例变量classDog:defshout(self):print('汪汪汪')defshake(self):print('摇尾巴')#创建狗对象p=Dog()p.shake()p.shout()print(p)t=Dog()t.shake()t.shout()print(t)运行结果:摇尾巴汪汪汪<__main__.Dogobjectat0x0000029491EE1180>摇尾巴汪汪汪<__main__.Dogobjectat0x0000029491EE0E50>从运行结果得知,这两个对象在内存中的地址是不同的。3、怎么才能学好Python安全编程?1.创建多个实例化如果现在狗的名字变成了“弯弯”,我们可以通过修改实例对象的值即可,但这种操作是不能更改类变量中的值。2、为什么要学习Python?四、使用构造器创建实例变量classDog:name='仔仔'#类变量color='黑色'defshout(self):return'汪汪汪'defshake(self):return'摇尾巴'#创建狗对象t=Dog()='弯弯'print(f'一只{t.color}的狗叫{},看见陌生人就会{t.shout()},看见家人就{t.shake()}。')p=Dog()print(f'一只{p.color}的狗叫{},看见陌生人就会{p.shout()},看见家人就{p.shake()}。')运行结果:一只黑色的狗叫弯弯,看见陌生人就会汪汪汪,看见家人就摇尾巴。一只黑色的狗叫仔仔,看见陌生人就会汪汪汪,看见家人就摇尾巴。3、怎么才能学好Python安全编程?1.创建多个实例化如果要修改类变量,则需要通过类名.变量名修改变量,这种操作会影响所有的实例,在使用时要特别注意。2、为什么要学习Python?四、使用构造器创建实例变量classDog:name='仔仔'#类变量color='黑色'defshout(self):return'汪汪汪'defshake(self):return'摇尾巴'#创建狗对象t=Dog()Dog.color='白色'='弯弯'print(f'一只{t.color}的狗叫{},看见陌生人就会{t.shout()},看见家人就{t.shake()}。')p=Dog()print(f'一只{p.color}的狗叫{},看见陌生人就会{p.shout()},看见家人就{p.shake()}。')运行结果:一只白色的狗叫弯弯,看见陌生人就会汪汪汪,看见家人就摇尾巴。一只白色的狗叫仔仔,看见陌生人就会汪汪汪,看见家人就摇尾巴。3、怎么才能学好Python安全编程?2.定义构造器__init__创建类是为了使用类的灵活性,每条狗的名字不一样,所以不能在一开始就将name变量设置成固定的名称,要解决这个问题就需要使用构造器,在创建实例对象的时候,直接进行传参。2、为什么要学习Python?四、使用构造器创建实例变量classPerson:def__init__(self,name,age):#构造器self.username=name#实例变量self.age=ageself.email=f'{name}@163.com'defsay(self):print(f'hello{self.username},age:{self.age},email:{self.email}')p1=Person('小天',20)p1.say()p2=Person('晓晓',25)p2.say()运行结果:hello小天,age:20,email:小天@163.comhello晓晓,age:25,email:晓晓@163.com3、怎么才能学好Python安全编程?2.定义构造器__init__self代表的是当前类的实例对象本身,它是在定义类的方法时必须写的第一个参数,在调用时会自动传入,在执行实例的方法时则不必再传入相应的参数。每个class只能有一个构造器。2、为什么要学习Python?四、使用构造器创建实例变量classDog:def__init__(self,name,color):#构造器=name#实例变量self.color=colordefshout(self):return'汪汪汪'defshake(self):return'摇尾巴'#创建狗对象t=Dog('弯弯','白色')print(f'一只{t.color}的狗叫{},看见陌生人就会{t.shout()},看见家人就{t.shake()}。')运行结果:一只白色的狗叫弯弯,看见陌生人就会汪汪汪,看见家人就摇尾巴。类的继承053、怎么才能学好Python安全编程?面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制。当已经存在一个类,需要另外再创建一个和已有类相似的类时,通常不必重复同一段代码,而是使用继承。通过继承创建的新类称为子类或派生类,被继承的类称为基类、父类或超类。2、为什么要学习Python?五、类的继承1.python继承的特点(1)如果在子类中需要父类的构造方法就需要显式的调用父类的构造方法,或者不重写父类的构造方法。详细说明可查看:python子类继承父类构造函数说明。(2)在调用基类的方法时,需要加上基类的类名前缀,且需要带上self参数变量。区别在于类中调用普通函数时并不需要带上self参数。(3)Python总是首先查找对应类型的方法,如果它不能在派生类中找到对应的方法,它才开始到基类中逐个查找。(先在本类中查找调用的方法,找不到才去基类中找)。3、怎么才能学好Python安全编程?2、为什么要学习Python?五、类的继承2.python继承的举例创建了一个Parent的父类,父类有money和house属性,有方法info。创建一个子类Son,继承父类的属性和方法。classParent:def__init__(self,money,house):self.money=moneyself.house=housedefinfo(self):print(f'爸爸有:{self.money}万元钱,有{self.house}座房子')classSon(Parent):#继承父类的构造器和方法passs1=Son(2,3)()运行结果:爸爸有:2万元钱,有3座房子3、怎么才能学好Python安全编程?2、为什么要学习Python?五、类的继承2.python继承的举例创建了一个Parent的父类,父类有money和house属性,有方法info。创建一个子类Son,继承父类的属性和方法。增加一个Daughter类,该类有自己的属性stu。classParent:def__init__(self,money,house):self.money=moneyself.house=housedefinfo(self):print(f'爸爸有:{self.money}万元钱,有{self.house}座房子')classSon(Parent):#儿子继承父类的构造器和方法passclassDaughter(Parent):#女儿继承父类的构造器和方法#女儿除了继承父类的,还有自己本身的stu="正在上初中"defdaughterinfo(self):print(f'女儿有{self.money}万元钱,目前{self.stu}')运行结果:爸爸有:2万元钱,有3座房子女儿有0.5万元钱,目前正在上初中s1=Son(2,3)()d1=Daughter(0.5,3)d1.daughterinfo()3、怎么才能学好Python安全编程?2、为什么要学习Python?五、类的继承3.方法的重写如果父类方法的功能不能满足需求,可以在子类中重写父类的方法。classParent:def__init__(self,money,house):self.money=moneyself.house=housedefinfo(self):print(f'爸爸有:{self.money}万元钱,有{self.house}座房子')classSon(Parent):#儿子继承父类的构造器和方法definfo(self,others):print(f'儿子继承了有:{self.money}万元钱,有{self.house}座房子,还有很多其他的东西,例如:{others}等。')s1=Son(2,3)("知识")运行结果:儿子继承了有:2万元钱,有3座房子,还有很多其他的东西,例如:知识等。类的私有变量和私有方法063、怎么才能学好Python安全编程?2、为什么要学习Python?六、类的私有变量和私有方法1.私有变量私有变量不能被子类继承,可以在变量名的前面加两条下划线,该变量就会变成私有变量。classParent:def__init__(self,money,house):self.money=moneyself.house=houseself.__age=10definfo(self):print(f'爸爸已经{self.__age}岁了,有:{self.money}万元钱,有{self.house}座房子')classSon(Parent):#儿子继承父类的构造器和方法definfo(self,others):print(f'儿子已经{self.__age}岁了,继承了:{self.money}万元钱,有{self.house}座房子,还有很多其他的东西,例如:{others}等。')s1=Son(2,3)("知识")3、怎么才能学好Python安全编程?2、为什么要学习Python?六、类的私有变量和私有方法1.私有变量私有变量不能被子类继承,可以在变量名的前面加两条下划线,该变量就会变成私有变量。运行结果:Traceback(mostrecentcalllast):File"C:\Users\Administrator\PycharmProjects\pythonProject1\1.py",line17,in<module>("知识")File"C:\Users\Administrator\PycharmProjects\pythonProject1\1.py",line13,ininfoprint(f'儿子已经{self.__age}岁了,继承了:{self.money}万元钱,有{self.house}座房子,还有很多其他的东西,例如:{others}等。')AttributeError:'Son'objecthasnoattribute'_Son__age'运行结果出现了错误,这是因为私有变量不能被子类继承,只能在自己类中使用。3、怎么才能学好Python安全编程?2、为什么要学习Python?六、类的私有变量和私有方法1.私有变量私有变量不能被子类继承,可以在变量名的前面加两条下划线,该变量就会变成私有变量。classParent:def__init__(self,money,house):self.money=moneyself.house=houseself.__age=50definfo(self):print(f'爸爸已经{self.__age}岁了,有{self.money}万元钱,有{self.house}座房子')classDaughter(Parent):#女儿继承父类的构造器和方法#女儿除了继承父类的,还有自己本身的stu="正在上初中"defdaughterinfo(self):print(f'女儿有{self.money}万元钱,目前{self.stu}')d1=Daughter(0.5,3)()d1.daughterinfo()运行结果:爸爸已经50岁了,有0.5万元钱,有3座房子女儿有0.5万元钱,目前正在上初中3、怎么才能学好Python安全编程?2、为什么要学习Python?六、类的私有变量和私有方法2.私有方法私有方法和私有变量一样都不能被子类继承,可以在方法名的前面加__private_,该方法就会变成私有方法。classParent:def__init__(self,money,house):self.money=moneyself.house=houseself.__age=50definfo(self):print(f'爸爸已经{self.__age}岁了,有{self.money}万元钱,有{self.house}座房子')def__private_info(self):print("这是私有方法")classDaughter(Parent):#女儿继承父类的构造器和方法#女儿除了继承父类的,还有自己本身的stu="正在上初中"defdaughterinfo(self):print(f'女儿有{self.money}万元钱,目前{self.stu}')d1=Daughter(0.5,3)()d1.__private_info()3、怎么才能学好Python安全编程?2、为什么要学习Python?六、类的私有变量和私有方法2.私有方法私有方法和私有变量一样都不能被子类继承,可以在方法名的前面加__private_,该方法就会变成私有方法。

温馨提示

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

评论

0/150

提交评论