欢迎来到咨信网! | 成为共赢成为共赢 咨信网助力知识提升 | 自信网络旗下运营:咨信网 自信AI创作助手 自信AI导航
咨信网
全部分类
  • 包罗万象   教育专区 >
  • 品牌综合   考试专区 >
  • 管理财经   行业资料 >
  • 环境建筑   通信科技 >
  • 法律文献   文学艺术 >
  • 学术论文   百科休闲 >
  • 应用文书   研究报告 >
  • ImageVerifierCode 换一换
    首页 咨信网 > 资源分类 > PDF文档下载
    分享到微信 分享到微博 分享到QQ空间

    Python程序设计基础 Chap11 面向对象程序设计.pdf

    • 资源ID:231294       资源大小:2.25MB        全文页数:68页
    • 资源格式: PDF        下载积分:15金币
    微信登录下载
    验证码下载 游客一键下载
    账号登录下载
    三方登录下载: QQ登录
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    验证码: 获取验证码
    温馨提示:
    支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    开通VIP
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    声明    |    会员权益      获赠5币      写作写作
    1、填表:    下载求助     索取发票    退款申请
    2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【曲****】。
    6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    7、文档遇到问题,请及时私信或留言给本站上传会员【曲****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

    Python程序设计基础 Chap11 面向对象程序设计.pdf

    1、内泰提纲11.1面句对象程序设计思想.o11.2 类和对象.011.3 属性和数据.-.-.011.4 方法.-.-.Q11.5 继承内家提纲11.6 多态与封装1L7定制类11.8 迭代器11.9 生成器11.10 综合示例本章小结治引例要求在终端输出如下信息。明明明晨晨晨 李李李张张张20岁,20岁,20岁,30岁,30岁,30岁,男,男,男男男男计算机专业掌握面向对象编程精通Python语言计算机专业精通Python语言掌握面向对象编程传统程序设计VS面向对象设计def major(name,age,gender):print($,%5岁,$,计算机专业%(name,age,gender

    2、)def technique(name,age,gender):print($,%$岁,5,掌握面向对象编程%(name,age,gender)def language(name,age,gender):print(%s,%s岁,s,精通Python语言%(name,age,gender)major(“李明”,20,“男)technique(李明”,20,“男“)language(“李明”,20,“男)major(张晨”,30,“男)language(张晨”,30,“男)technique(张晨”,30,“男“)class Person:def _init_(self,name,age,gen

    3、der):self.name=name self.age=age self.gender=genderdef major(self):print(”s,%s岁,s,计算机专业%(self.name,self.age,self.gender)def technique(self):print(”$,%5岁,$,掌握面向对象编程(self.name,self.age,self.gender)def language(self):print(s,%s岁,s,精通Python语言”%(self.name,self.age,self.gender)ming=Person(“李明”,20,“男)ming.

    4、major()ming.technique()ming.language()chen=Person。张晨”,30,“男“)chen.major()chen.technique()nhpn gnrniaria八11.1面向对象程序设计思想:面向对象的基本设计思想 面向对象是从现实世界中客观存在的事物(即对象)出发来构造软件系统 强调直接以问题域(现实世界)中的事物为中心来思 考问题,认识问题 根据这些事物的本质特点,把它们抽象地表示为系统 中的对象,作为系统的基本构成单位 使系统直接地映射问题域,保持问题域中事物及其相 互关系的本来面貌11J J面向对象的基本概念:对象对象是现实世界中一个 实际

    5、存在的事物,它可 以是一个物理对象,还 可以是某一类概念实体 的实例。面向对象程序设计的对 象,是系统中用来描述 客观事物的一个实体,是构成系统的一个基本 单元,由一组属性和一 组行为构成。:类 类是具有相同或相似性 质的对象的抽象。类是具有相似结构、行 为和关系的一组对象的 描述符,类包括属性和 操作。对象的抽象是类,类的 具体化就是对象,也可 以说类的实例是对象,类实际上就是一种数据-继承继承反应客观世界中各 类事物之间的一种“一 般和特殊”的关系。继承是指类之间有继承 关系,子类有条件地继 承父类的特征。一个新类可以从现有的 类中派生出来,这个过 程称为类继承。类的对象是各自封闭的,如果

    6、没继承机制,则 类对象中的数据、方法 就会出现大量重复。继承不仅支持系统的可 重用性,而且还促进系 统的可扩充性。面向对象的基本卜心:封装封装就是把对象的属性 和基于属性的操作结合 成一个不可分割的独立 实体,并尽可能隐蔽对 象的内部细节,只保留 一些对外接口使之与外 部发生联系封装的目的在于把对象 的设计者和使用分开,使用者不必知晓行为实 现的细节,只需用设计 者对外提供的接口来访 问该对象如司机没有必要为了开 车而去了解以汽油作为 动力的内燃机引擎的工 作原理。11J J面向对象的基本概念:多态多态一般指具有多种形 态的能力对象的多态是指在一般 类中定义的属性或操作 被特殊类继承后,可以

    7、具有不同的数据类型或 表现出不同的行为。利用多态性,用户可以 发送一个通用的信息,而将所有的实现细节都 留给接收消息的对象自 行决定。在面向对象程序设计中,可以在派生类中重定 义基类函数来实现多态 性。11J.2面向对象设计:面向对象程序设计借助特定的计算机语言实现从现实世界问题域中的实 体到计算机世界中的对象的映射表达。首先需要将客观存在的实体抽象成概念世界中的抽象 数据类型抽象数据类型里面包括实体中与需要解决的问题相关的 属性和方法再用面向对象的工具将这个抽象数据类型用计算机逻 辑表达出来即构造计算机能够理解和处理的类再将类进行实例化就得到了现实世界中的实体在计算 机世界中的映射对象面向对

    8、象设计:面向对象程序设计具有如下优点 符合人们习惯的思维方法,便于分解大型的复杂多变 的问题 易于软件的维护和功能的增减 可重用性好 与可视化技术相结合,改善了工作界面11.2类和对象:类和对象关系对象是对某个具体客观事物的抽象类是对对象的抽象描述,在计算机语言中是一种抽象 的数据类型。类定义了数据类型的数据(属性)和行为(方法)。类与对象的关系是:对象是类的实例,类是对象的模板。对对象进行抽象为类-类(CLASS)例如:man class李明对类进行实例化11.2类和对象:创建类 Python定义一个类使用关键字class声明,类的声明格式如下:class className:类体class

    9、是关键字className(类名)为有效的标识符命名规则一般为多个单词组成的名称,除每个单词的首字母大写外,其余字母 均小写。注意类名后面有个冒号。在类体中,可以定义属性和方法,由缩进 的语句块组成。11.2类和对象:创建对象类是抽象的,必须实例化类才能使用类定义的功能,即创建类的对象把类的定义视为数据结构的类型定义,那么实例化就 是创建了 一个这种类型的变量对象的创建和调用格式如下:anObject=className()例H-1定义类Person,创建Person类的对象p,并打印pclass Person:#定义类Personpass#类体为空语句p=Person()#创建和使用对象pp

    10、rint(p)11.3属性和数据:类的数据成员是在类中定义的成员变量,用来存 储描述类的特征的值,称为属性。:属性可以被该类中定义的方法访问,也可以通过 类或类的实例进行访问。类属性 实例属性 私有属性/公有属性 自定义属性11.3.1类属性:类属性是类的数据或函数,类的数据属性仅仅是 所定义的类中的变量,它们可以像任何其他变量 一样在类定义后被使用。类属性属于整个类,不是特定实例的一部分,而是所 有实例之间共享的一个副本。类属性通常在类体中初始化,然后,在类定义的方法 或外部代码中,通过类名访问类属性的读、写访问都是通过“类名来实现的【例11-2定义Person类及其属性,利用类名访问类属性

    11、class Person:name=Timage=22print(Person.name,Person.age)11.3.2实例属性每个实例对象都有自己的属性,通过“self.”变量 名定义,实例属性属于特定的实例。实例变量在类的内部通过“self.”访问 在外部通过对象实例访问。实例属性初始化:通常在init方法中利用“self对 实例属性进行初始化。类的内部通过“self.”访问se实例变量名=值外部利用对象名访问:obj=className()#创建对象obj.实例变量名=值#写入obj.实例变量名#读取11.3.2实例属性0【例11-3定义Student类,包括属性和方法,定义Stud

    12、ent类的实例s1和s2,赋予不同的参数值,并通过实例名调用实例属性和方法。class Student:def _init_(self,name,age,grade):self.name=name self.age=ageself.grade=gradedef say_hi(self):print(!l am a student,my name is,self.name)s1=Student(Tom,21,3)s1.say_hi()print(s1.grade)s2=Student(,Mike,20)2)s2.say_hi()print(s2.grade)运行结果如下:I am a stude

    13、nt,my name is Tom 3I am a student,my name is Mike 211.3.3类属性与实例属性的联系:类与实例有各自的名字空间。类属性可以通过类 或实例访问,当通过实例访问,Python则先查找 实例的名字空间,再找类的名字空间,最后找基 类的名字空间;如果在实例空间找到了该属性名,则访问实例的 属性,而如果类名字空间也有这个属性,则会被 隐藏,直到实例属性被清除。:私有属性指的是只有在类方法中才能访问私有属 性,对象不能直接访问私有属性。公有属性可以被对象直接访问。:通常约定两个下画线开头,但是不以两个下画线 结束的属性为私有属性,其他的都是公有属性。na

    14、meclass A:name=class A def get_name()print(A._name)A.get_name()A.name#私有属性#在类方法中访问私有类属性#通过方法访问私有类属性#不能直接访问私有类属性,会报错11.3.4私有属性与公有:【例11-4】定义CustomerCounter类,包括私有属性privateCount和 公有属性publicCount,定义方法count。访问私有属ii和公有属性,利用两种方式访问私有属性:对象利用count方法访问私有属性;对 象直接访问私有属性。class CustomerCounter:privateCount=0#私有变量pu

    15、blicCount=0#公有变量def count(self):self._privateCount+=1self.publicCount+=1print(privateCount:,self._privateCount)ent=CustomerCounter()cnt.count()cnt.count()print(cnt.publicCount)print(cnt.privateCount)#报错,实例不能访问私有变量11.3.5自定义属性:自定义属性,即类定义中不存在的属性对象通过_d ict_存储自定义属性:获取属性的值和设置属性的值的方法 getattr_(self,name):获取

    16、属性,访问不存在的属 性时调用 _getattribute_(self,name):获取属性,访问存在的 属性时调用(先调用该方法,查看是否存在该属性,若不存在,接着去调用 getattr_)_setattr_(self,name,value):设置实例对象的一个 新的属性 _delattr_(self,name):删除一个实例对象的属性11.3.5自定义属性【例115】自定义属性示例,定义CustomAttribute类,定义方法getattrj),getattribute(),setattr_()和_delattr_()方法,方法中输出方法幺,在main函数中,通过属性值设置,验证属性设置

    17、所需调用的方法。class CustomAttribute:def _getattr_(self,name):print(_getattr_)def _getattribute_(self,name):print(*_getattribute_)return object._getattribute_(self,name)def _setattr_(self,name,value):object._setattr_(self,name,str.strip(value)printC_setattr_)def _delattr_(self,name):printC_delattr_)if _nam

    18、e_=_main_o=CustomAttribute()o.firstname=Lily,#定义一个实例。的属性firstnameprint(o.firstname)11.3.6 self 的作用:*se时旨的是类实例对象,不是类 sHf只有在类的方法中才会有,独立的函数或方法是不 必带有sHf的 se斤在定义类的方法时是必须有的,虽然在调用时不必 传入相应的参数o11.4方法:方法是与类相关的函数。:方法和函数不同函数是封装操作的小程序方法是定义在类内部的函数,并且定义方法与普通函 数有所不同类的方法主要有三种类型 实例方法 类方法 静态方法:不同的类方法有不同的使用场景和声明调用形式,不同

    19、的方法也具有不同的访问限制11.4.1方法的声明和调:方法的声明和调用一般形式 在类的内部,使用def关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含对象本身的参 数,通常为sHf,且为第一个参数。方法的声明格式def方法名(sHf,形参列表)函数体 方法的调用格式对象.方法名(实参列表)方法定义时的第一个参数self在调用的时候,用户不用给该参数传值,Python自动把对象实例传递给该参数:定义类Stud ent,创建其对象,并调用其方法。class Student:#定义类Studentdef say_hi(self,name):#定义方法 say_hi self.name=

    20、name#把参数 name 赋值给 self.nameprint(hello3 my name is,self.name)s=Student()#创建对象s.say_hi(Alice)#调用对象的方法,不用给se什传值011.4.2实例方法、类方法和静态方法:7 实例方法是属于实例的方法,通过实例名.方法名调用,该方法 可以访问类属性、实例属性、类方法、实例方法和静 态方法。实例方法是在类中最常定义的成员方法,它至少有一 个参数并且必须以实例对象作为其第一个参数,一般 以“self作为第一个参数。在类外,实例方法只能通过实例对象去调用。11.4.2实例方法、类方法和静态方法:7 实例方法实例方

    21、法的声明格式如下:def方法名(se%形参列表):函数体实例方法通过实例对象调用:对象.方法名(实参列表)s=Student()#创建对象s.say hi()#调用对象的方法11.4.2实例方法、类方法和静态方法 2.类方法类方法是属于类的方法可以通过实例名.方法名也可以通过类名.方法名调用 类方法不能访问实例属性和实例方法 类方法不对特定实例进行操作,在类方法中访问实例 属性会导致错误 类方法需要用修饰器“classmethod来标识 第一个参数必须是类对象,一般以“cis”作为第一个参from itertools import*list(islice(fib(),10)1,1,2,3,5,

    22、8,13,21,34,5511.10综合示例1.要求按照以下要求定义一个乌龟类和鱼类并尝试编写游戏。假设游戏场景范围为(x,y),0 x10,0y10o(1)游戏生成1只乌龟和10条鱼;(2)它们的移动方向均随机;(3)乌龟的最大移动能力是2(可以随机移动1或2),鱼的最大移动能力是1*9(4)当移动到场景边界,自动向反方向移动;(5)乌龟初始化体力为100;(6)乌龟每移动一次,体力消耗1;(7)当乌龟和鱼坐标重叠,乌龟吃掉鱼,乌龟体力增加20;(8)鱼暂不计算体力;(9)当乌龟体力值为0或者鱼儿的数量为0,游戏结束。:*2.分析根据上述要求,此游戏有两类对象,分别是乌龟和鱼,它们分别具有

    23、的能力如下。(1)乌龟:初始化位置(随机),移动(随机1或2,遇到边界向反方向移动),吃鱼(乌龟坐标和鱼坐标重叠,乌龟吃鱼);(2)鱼:初始化位置(随机),移动(移动1,遇到边界向反方向移动)。以上分析表明,乌龟和鱼类都有“随机初始化位置”和“移动”的方法,为 此抽象出它们的父类GameAnimal,在父类中定义初始化位置和移动的方法。此游戏包括三个类,GameAnimal,乌龟和鱼。在主程序中,定义1个乌龟对象和10个鱼对象,然后循环执行如下步骤:(1)获取乌龟的坐标;(2)判断所有鱼当中是否有鱼的坐标与乌龟的坐标重叠,如果重叠则删除此鱼对象,乌龟体力增加20;(3)若鱼被吃完,退出循环;(

    24、4)若乌龟能量为0,退出循环。3.代码代码和运行效果请见P205、P20611本章小结 1.介绍了面向对象程序设计方法,介绍类、对象的创建,以及属性和 方法等基本概念。并进一步描述了面向对象的三大特性:继承、多态 和封装。2.对象是对某个具体客观事物的抽象。类是对对象的抽象描述,定义 一个类使用关键字class声明。3.类的数据成员是在类中定义的成员变量,用来存储描述类的特征的 值,称为属性。使用def关键字可以为类定义一个方法,与一般函数 定义不同,有些类方法必须包含缺省参数,如seE cis等。4.每个类至少有一个父类,这两个类之间是一种“is-a”的关系,子类 会继承父类的所有属性。多态意味着不同类的对象使用相同的操作,但在具体调用时会依据具体对象调用不同的实现。封装意味着对外部 隐藏对象的行为,在程序外部看不到。5.迭代器是一个带状态的对象,能在你调用next。方法的时候返回容 器中的下一个值。生成器是一种特殊的迭代器。


    注意事项

    本文(Python程序设计基础 Chap11 面向对象程序设计.pdf)为本站上传会员【曲****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表




    页脚通栏广告
    关于我们 - 网站声明 - 诚招英才 - 文档分销 - 便捷服务 - 联系我们 - 成长足迹

    Copyright ©2010-2024   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:4008-655-100    投诉/维权电话:4009-655-100   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   



    关注我们 :gzh.png  weibo.png  LOFTER.png