回顾上一课,我们学到了数据抽象的含义、面向对象的三个特性、抽象和继承五个原则。 本节从以上哪些特性和原则出发,结合Python语法进行实战性学习
班级基础语法班级语法的学习主要分为声明、属性、特殊方法三个方面,有三个部分
类声明
在Python3中声明类是一件非常简单的事情,只需遵循上面的class语法,就可以直接声明类。 请注意,类声明必须在使用前,并且类的名称通常以驼峰匹配表达式的大写字母开头
类的属性
类属性用于存储当前类的公共数据,类属性由所有类的实例共享。 在大多数情况下,实例属性可能更多,但某些公共变量的声明除外
类中的方法
类中的方法主要分为三类:类方法、静态方法和实例方法,分类的主要依据是必须使用该类型的方法。
类方法:必须传递类参数。 可以使用的方法仅限于类级别本身。 在常见的cls中,不能调用实例方法静态方法。 静态方法与普通函数相同。 只是从命名空间划分为类,范围更小的实例方法。 实例方法必须传递实例对象。 在典型的self中,可以调用属于当前类的所有方法。 特殊方法主要是指
执行结果:
其中,类方法由@classmethod装饰,传递的参数cls可以统计当前类中通过组合类方法和类属性创建的实例的数量
静态方法用@staticmethod装饰,与普通函数在本质上没有任何区别
实例方法
实例方法的声明很简单。 第一个self参数用于标识实例本身,并且可以通过self参数访问当前实例的所有数据。 这是我们操作的主要载体
__{名称}是python的语法糖,主要用于向外部隐藏当前属性。 对于以双下划线开头的属性,python将转义并在前面加上相应的类名,但如果其他人知道该属性,则可以通过类名的属性名称进行访问
特殊方法
类中的特殊方法主要是指以__双下划线开头的类方法,这些类缺省情况下是实现功能的几种方法,实际上是python的其他协议,如__iter__迭代器合同
常规类方法的功能说明
对于理解类的生命周期来说,更重要的是了解类的生命周期在整个生命周期中有哪些阶段,以及在哪些阶段可以做什么。
1 .实例创建:实例创建主要是__new__阶段,上述实现来源于django_rest_framework,根据不同的参数选择不同的初始化方法
2初始化阶段:初始化阶段用__init__实现,不仅可以进行简单的赋值,还可以加工请求的参数,调用父类进行初始化工作
3实例操作是类在使用过程中调用的各种方法对类执行的操作
4实例的销毁由python的gc垃圾回收控制,但在销毁时调用__del__方法,以便类使用资源完成清理工作
从抽象数据结构中学习类的抽象,
在没有抽象数据的情况下,我们在业务中使用这种数据结构。 这些主要问题是,如果后续的我们要进行重构,在多个地方使用这个数据结构,就需要更改一切
从数据结构开始
使用抽象的数据结构,可以屏蔽各种底层数据结构。 然后,在进行业务重构时,例如,如果list切换到dict,则直接更改room内部的实现,并屏蔽底层实现的详细信息
业务抽象是一个任务模块的例子,当我们班在后期可能增加不同行为的班时,通常我们需要进行业务抽象。 抽象的含义是让类实现统一的接口,提供一致的对外意义
通过上述抽象,我们根据业务定义了两个具体的业务实现接口类,但是为了继承抽象类,可以用抽象类的统一方法使用这些类。
为了实现组合高层抽象类的功能,如果功能上不属于以前抽象类的范畴,通常需要根据业务功能进行业务类抽象,实现组合功能
在这个抽象过程中,经常犯的错误是将多个类的功能合并到一个类中。 这样做的话,通常的问题是需要以后重构来分割功能,会导致很多重构
设计模式我们不谈设计模式的好处,不谈设计模式的危害。 设计模式通常在设计时在逻辑上很简单,但如何识别场景和选择正确的设计模式对初学者来说很难
其实对于初学者来说,比起反复学习设计模式、胡来,更多的是学习以往面向对象的原则,让抽象的类和设计满足基础性的五个原则
使用组合进行继承扩展继承的主要问题主要在于继承后子类与父类之间的耦合度,而基于组合的方式可以减少这种耦合关系。 具体地说,可以看到我的https://zikao cs/I 6698693702040158734 /其中的类继承和组合问题
mixin俗称混入类,主要配合多继承使用。 可以通过使用基本抽象类并以mixin方式混入不同的类来扩展类功能,而不是修改抽象类来添加功能
更多的实践性学习有人喜欢通过源代码学习,但往往收获甚微。 实际上,很多时候都不能进行作者的设计。 面向对象也是如此。 学习的过程主要是思考。 当我们设计班级时,我们会考虑原则。 然后通过原则,把设计模式中各种设计的精髓推回去,指导大家理解里面的思想,从而设计出更好的课堂。 今天的分享到此为止
自考资料网:建议开通永久VIP超级会员更划算,除特殊资源外,全站所有资源永久免费下载
1. 本站所有网课课程资料来源于用户上传和网络收集,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,助力考生上岸!
3. 如果你想分享自己的经验或案例,可在后台编辑,经审核后发布在“自考资料网”,有下载币奖励哦!
4. 本站提供的课程资源,可能含有水印,介意者请勿下载!
5. 如有链接无法下载、失效或广告,请联系管理员处理(在线客服)!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 星光不问赶路人,岁月不负有心人,不忘初心,方得始终!