- 1
- 0
- 约8.07千字
- 约 52页
- 2024-05-25 发布于广东
- 举报
第6章面向对象程序设计计划“类”代码编写基础一个有关“类”的例子“类”代码语法细节面向对象程序设计思想“类”代码语法细节新式类,问题的引入在上一个slides中,我们在定义类时,有时用一个空的括号(),有时给括号里写一个(object),这有什么区别?新式类自从Python2.2以来,引入了一种新的类,称之为“新式类”(new-style),而与之相对应的、旧的称之为“经典类”(classic)对于Python3而言,所有的类都是所谓的“新式类”。不管他们是否显示地继承自object。也就是说,所有的类都继承自object,不管是显示地还是隐式地新式类而对于Python2,类必须继承自object,才是“新式类”新式类对比一下,我们发现:Thesyntaxforold-styleclassesinPython2.xisthesameasthealternativesyntaxfornew-styleclassesinPython3.x新式类好习惯是,编码时始终写上object:References/questions/4015417/python-class-inherits-object/questions/4015417/python-class-inherits-object/questions/54867/what-is-the-difference-between-old-style-and-new-style-classes-in-python/questions/54867/what-is-the-difference-between-old-style-and-new-style-classes-in-python/release/2.2.3/whatsnew/sect-rellinks.html/release/2.2.3/whatsnew/sect-rellinks.html静态方法我们已经熟悉了实例方法(instancemethod)。实例方法在其第一个参数self中传递一个实例对象,以充当方法调用的一个隐式主体静态方法有些时候,程序需要处理与类而不是实例相关的数据比如,要记录由一个类创建的实例对象的数目。这种类型的信息及对其的处理与类相关,而不应与实例对象相关。也就是说,这种信息通常存储在类自身上,不需要依附于任何实例对象我们需要一个类中的方法,它不仅不传递而且也不期待一个self实例参数Python有静态方法(staticmethod):嵌套在类中的没有self参数的函数,旨在操作类属性而不是实例属性静态方法通常记录跨所有实例的信息,而不是为实例提供行为静态方法如下代码在Python2中失败,并不意外:对于第一次通过类对象调用方法,因为在Python2中无绑定实例的方法并不完全等同于普通的函数,即使在def头部没有写self参数,该方法在调用的时候仍然期待一个实例对象,故失败对于第二次通过实例对象调用方法,因为实例被自动传递给该方法,而该方法没有一个参数来接收这个实例,故失败静态方法Python3中做同样的事,情况有所不同通过类对象调用“无实例方法”(实际就是所谓的“静态方法”),在Python3中成功了而通过实例对象调用这个方法,仍不成功静态方法我们需要特殊的标记,用于生成“静态方法”这就是内置函数staticmethod使用内置函数staticmethod得到一个“静态方法”:该方法在Python2.7中可以通过类对象和实例对象调用该方法在Python3.5中可以通过实例对象调用(在Python3.5中,即使没有使用staticmethod,这个方法一样可以通过类对象调用,详见前一页PPT)静态方法Python2.7中:静态方法Python3.5中:静态方法静态方法一样可以被继承,并在子类中被重载:类方法还有一种方法,叫做类方法(classmethod)传递给它的第一个参数是一个类对象需要使用内置函数classmethod来生成:类方法使用类方法而不是静态方法,实现对实例对象个数的统计注意使用了内置函数classmethod注意类方法自动地将类对象作为第一个参数接收总结我们学习了三种在类中定义的、与类相关的方法:实例方法(instancemethod):它期待一个实例对象作为第一个参数。我们把这个参数写作self。通过实例对象调用实例方法时,Python会把实例对象自动传递给第一个参数。而通过类调用时,需要手动传入实例静态方法(staticmethod):它不期待参数,调用时也不需要实例对象作为参数。它通常都是通过类对象来调用类方法(classmethod):它期待一个类对象作为第一个
您可能关注的文档
- 《Python程序设计》课件第1章__基础知识.pptx
- 《Linux服务器配置与管理》课件项目1 搭建LINUX服务器配置环境 .pptx
- 《Python程序设计》课件第6章__面向对象程序设计_1.pptx
- 《Linux服务器配置与管理》课件项目9 邮件服务器配置与管理.pptx
- 《Python程序设计》课件第2章__数据结构_2.ppt
- 《Linux服务器配置与管理》课件项目4 Samba服务器配置与管理.pptx
- 《Linux服务器配置与管理》课件项目3 Telnet与SSH服务器配置与管理.pptx
- 《Linux服务器配置与管理》课件项目8 FTP服务器配置与管理.pptx
- 《Linux服务器配置与管理》课件项目10 防火墙配置与管理.pptx
- 《Linux服务器配置与管理》课件项目7 DNS服务器的配置与管理.pptx
- 2025年新能源汽车铝合金型材表面处理报告.docx
- 2025_2026学年新教材高中历史第四单元资本主义制度的确立9资产阶级革命与资本主义制度的确立课时作业含解析新人教版必修中外历史纲要下.doc
- 2026版高考历史一轮训练课后限时集训10近代西方民主政治的确立与发展含解析人民版.doc
- 2025年光伏支架轻量化研发趋势与材料创新报告.docx
- 2025_2026学年新教材高中英语UNIT3SPORTSANDFITNESS预习新知早知道学案含解析新人教版必修第一册.doc
- 初中道德与法治八年级上册《爱我中华》单元教学设计(1).docx
- Unit9IlikemusicthatIcandancetoSectionA(3a3c)(教学课件)人教版(0)九年级英语全册().pptx
- 四年级下册《我的“自画像”》习作指导课教学设计——基于例文支架的精准表达训练.docx
- 星火燎原:新中国“两弹一星”伟业的奠基与精神传承.docx
- 中考英语一轮复习:解锁单项选择的逻辑与策略(第一讲).docx
原创力文档

文档评论(0)