没有合适的资源?快使用搜索试试~ 我知道了~
python编程范式培训及万能oop转化公式1
需积分: 0 0 下载量 101 浏览量
2022-08-08
20:15:03
上传
评论
收藏 196KB DOCX 举报
温馨提示
试读
17页
1.1.2 方式二,面向过程函数式编程 1.1.3 方式三,oop编程. 适合多个函数间需要使用同一个变量,并且需要多实例(如果使在使用面向过程时候需要使用函数
资源详情
资源评论
资源推荐
目录
0、 前言 ......................................................................................................................................................................................................................................1
1. python 编程范式种类:..........................................................................................................................................................................................................2
1.1 三种 python 编程方式 ..................................................................................................................................................................................................2
1.1.1 方式一,平铺指令。.........................................................................................................................................................................................2
1.1.2 方式二,面向过程函数式编程。.....................................................................................................................................................................2
1.1.3 方式三,oop 编程. ............................................................................................................................................................................................2
1.2 如何判断需不需要使用 oop ........................................................................................................................................................................................2
1.3 举一个实现人的各个功能的写法,具体详见代码附件里面的文件。 .....................................................................................................................2
1.4 知乎上回答面向过程和 oop 的区别,参考一下?....................................................................................................................................................2
2. 设计模式 .................................................................................................................................................................................................................................3
2.1 经典 23 种设计模式....................................................................................................................................................................................................3
2.2 总共 36 种设计模式 .....................................................................................................................................................................................................4
2.3 设计模式例子大全........................................................................................................................................................................................................5
2.3.1 菜鸟教程的,java 实现的例子。 .....................................................................................................................................................................5
2.3.2 github 的,python 例子。..................................................................................................................................................................................5
2.4 反模式 ...........................................................................................................................................................................................................................5
3.代码举例 ...................................................................................................................................................................................................................................5
3.1 使用无限复制粘贴扣字 low 模式来写代码真实例子,详见文件夹。 ....................................................................................................................6
3.2 使用三种编程范式完成一个人的功能,详见文件夹。 .............................................................................................................................................6
4、 python 里面的 oop 介绍......................................................................................................................................................................................................6
4.1 python self 是什么,变量前什么时候要加 self,方法名第一个参数什么时候加 self ..........................................................................................6
4.2 python 什么时候用实例方法? 什么时候用类方法? 什么时候用静态方法? .....................................................................................................6
4.3 python 怎么申明访问权限?什么时候使用公有 保护 私有属性/方法?为什么要分访问权限?......................................................................6
5、 万能的 oop 转化公式,不需要学习任何设计模式和掌握封装技巧。 ...........................................................................................................................7
5.1、针对全局变量加函数无限复制粘贴扣字的写法, ..................................................................................................................................................7
5.2、针对频繁 return 和大量重复传参的写法..................................................................................................................................................................7
5.2.1、转化公式 1 .......................................................................................................................................................................................................7
5.2.2、转化公式 2 .......................................................................................................................................................................................................7
5.3 对老代码和新代码的改造............................................................................................................................................................................................7
6、 常见问题解答 ......................................................................................................................................................................................................................7
6.1、是不是所有代码都要用 oop? ..................................................................................................................................................................................7
6.2、函数和类有什么区别?..............................................................................................................................................................................................8
6.3 为什么要由面向过程转为写类,主要原因是写类是可以继承减少代码吗? ........................................................................................................8
6.4 感觉面向过程写代码更直观,不想用面向对象? ....................................................................................................................................................8
6.5 讲 oop 为什么要怼代码中有 return 的写法? .............................................................................................................................................................8
6.6 面向过程转 oop 到底能有什么好处,为什么要改变?............................................................................................................................................8
7、 类的封装技巧 ......................................................................................................................................................................................................................9
7.1 封装时候应该声明哪些实例属性(成员变量)? ....................................................................................................................................................9
7.2 类名的取名 ...................................................................................................................................................................................................................9
8 一些较好的类名命名方式,附录。........................................................................................................................................................................................9
8.1 业务逻辑类 ...................................................................................................................................................................................................................9
8.2 操作 DataSource 的层...................................................................................................................................................................................................9
8.3 加工数据的层 .............................................................................................................................................................................................................10
8.4 拉取 DataSource 的层.................................................................................................................................................................................................10
8.5 进行异步处理的层......................................................................................................................................................................................................11
8.6 集成访问 FrameWork 的层 .........................................................................................................................................................................................11
8.7 操作 View 的类 ...........................................................................................................................................................................................................11
8.8 包含 UI 上的动作的类 ................................................................................................................................................................................................12
8.9 类命名总结 .................................................................................................................................................................................................................12
9、python 代码规范 、pep8 规范 (与编程范式无关) ....................................................................................................................................................12
9.1 Python pep8 规范.........................................................................................................................................................................................................12
9.2 pycharm 一键快速格式化,减少大部分不规范。....................................................................................................................................................12
9.3 在 pycharm 中使用注释的方式临时抑制少数警告..................................................................................................................................................12
9.4 不要在 pycharm 编辑器配置全局的警告抑制,到时候永远看不到该类型的警告了。 ......................................................................................13
9.5 pycharm 设置每行最大字母数....................................................................................................................................................................................13
0、 前言
0) 最重要的事情要放在开头说,不然对文章的阐述会带有抵触情绪。事先声明,我从没有发表过反对面向过程和面向过程是垃圾的论断,我只
是要反对在任何场景任何情况下都 100%极端地纯面向过程的代码写法,这种编程思维方式在任何公司的 python 人 员里面都十分之普遍,对于
其他语言的开发者这种过于极端的面向过程编程思维方式则不会这么严重。我不反对面向过程,而且我在本文也针对不同场景精确地提供了如何
判断使用哪一种编程方式好;同时我要反对只有形没有魂的无效废物类和假 oop。本文比较的是 oop + 面向过程混合开发 对比 100%纯极端面
向过程;不要为了逃避学习 oop,故意强奸民意歪曲成是我要表达 纯 oop 编程 比 面向过程 + oop 混合开发好 这个结论,所以接下来大家千万
别故意扯这个(例如故意拿 面向过程有时候也有好处 来作为论点,不理会这种伪观点,不值一驳),此文只对比 oop + 面向过程混合开发 对
比 100%纯极端面向过程。
1)这里面的编程范式主要是讲 oop 编程,这是最重要的。本文的经验和结论是经过我纵向比较和横向比较得出来的,就算是培训班老师都不可
能有这么深刻的体会。
纵向比较:对比我以前写代码为什么很 low 写得很慢 写得很重复 写代码情不自禁找个老代码复制写代码很难开头。
横向比较:使用新的思维方法对接新平台和重构老的对接平台,为什么可以动不动使解析减少 60%行、使调度比价减少 90%行、使取价格返回给
前端减少 90%行;为什么可以大幅度减少代码中的重复传参和 return 几十倍;为什么能使所写的代码更直观地看懂。
2)基于自己的比较和看一些面向过程和 oop 区别的回答,掌握了面向过程和面向对象编程的最本质区别,并针对区别提炼除了万能 oop 转化公
式,即不需要改变现在代码的思维,只需要按照公式三步转化,就可以达到 oo 了。使用 oop 转化公式,写代码很快,编程基本不用想,不学封
装技巧和设计模式的前提下,能写模块就能写类,能写项目就能写框架(简单的)。
3)如果继续使用无限复制粘贴扣字的极端面向过程编程的 low 模式写代码,要么会造成每天很忙,要么会造成半天的任务要花
一天完成,虽然工作时间饱和了,工作任务量却不算很饱和。绝大部分工作是瞎忙活,没有用正确的方式。oop 就是坦克核武器,面向过程在 oop
面前是关公耍大刀,会成为炮灰。
1. python 编程范式种类:
1.1 三种 python 编程方式
1.1.1 方式一,平铺指令。
从上往下叠加指令,适合简单的独立脚本。不需要和没机会被别的模块导入。
1.1.2 方式二,面向过程函数式编程。
适合实现独立的转化功能,基本原理是要实现转化 y = f(x),适合函数无依赖状态(不需要在多个函数中频繁的传入和 return 相同意义的参数)。
1.1.3 方式三,oop 编程.
适合多个函数间需要使用同一个变量,并且需要多实例(如果使在使用面向过程时候需要使用函数频繁的 return 各种状态/变量由类外使用多个
参数来保存这些值和传入这些值,那就是也判断为需要多实例),必须同时满足这两个条件,才使用 oop 好,否则不需要 oop。(但单例模式为
了控制灵活的初始化传参和延迟初始化动作,一般也用类的方式)
1.2 如何判断需不需要使用 oop
网上说的简单用面向过程,复杂的用面向对象,这简直是错误的废话。简单和复杂界定不了,即使是一个简单的查询价格,经过大量平台的才写
对比,oop 都能比面向过程减少 70%行以上的代码,所以用这句话来判断用什么方式来写代码是错误的。只要严格使用上面描述的判断方式,就
能很容易知道在什么场景什么时候使用哪种方式好了。具体的第二种和第三种方式在说什么,详细解释看下文,举一个人类的写法为例。
1.3 举一个实现人的各个功能的写法,具体详见代码附件里面的文件。
第一种是:oop 写法,类 加 方法
第二种是:全局变量加函数写法
第三种是:纯函数不要全局变量,依靠无限反复传参和 return 来实现
第四种是:废物无效类的写法,这是装 x 的写法,不是因为写了 class 就会高大上了,由于封装太少了(没有封装),依然是面向过程思维的类。
1.4 知乎上回答面向过程和 oop 的区别,参考一下?
面向对象和面向过程分别是什么?
https://www.zhihu.com/question/28790424
面向对象与面向过程最根本的不同是什么?
https://www.zhihu.com/question/22679662
面向对象和面向过程的区别有哪些?
https://www.zhihu.com/question/19835050/answer/41011657
面向对象和面向过程的相同点和区别是什么?
https://www.zhihu.com/question/264967643/answer/288905292
总结一下,大部分回答的都很宽泛,很抽象,不具体,对你从现在的极端面向过程转 oop 没有什么太大的帮助。
2. 设计模式
不需要学习这部分,先按照 oop 转换公式完成从面向过程到 oop 的转化。等用多了,再看这里。oop 面向对象是设计模式的基石。
2.1 经典 23 种设计模式
频
率
所属
类型
模式名称
模式
简单定义
5
创建
型
Singleton
单件
保证一个类只有一个实例,并提供一个访问它的全局访问点。
5
结构
型
Composite
组合模
式
将对象组合成树形结构以表示部分整体的关系,Composite 使得用户对单个对象和组合对象
的使用具有一致性。
5
结构
型
FAÇADE
外观
为子系统中的一组接口提供一致的界面,facade 提供了一高层接口,这个接口使得子系统更
容易使用。
5
结构
型
Proxy
代理
为其他对象提供一种代理以控制对这个对象的访问
5
行为
型
Iterator
迭代器
提供一个方法顺序访问一个聚合对象的各个元素,而又不需要暴露该对象的内部表示。
5
行为
型
Observer
观察者
定义对象间一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到
通知自动更新。
5
行为
型
Template
Method
模板方
法
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,Template Method 使得子类可
以不改变一个算法的结构即可以重定义该算法得某些特定步骤。
4
创建
型
Abstract
Factory
抽象工
厂
提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们的具体类。
4
创建
型
Factory
Method
工厂方
法
定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method 使一个类的实
例化延迟到了子类。
4
结构
型
Adapter
适配器
将一类的接口转换成客户希望的另外一个接口,Adapter 模式使得原本由于接口不兼容而不
能一起工作那些类可以一起工作。
4
结构
型
Decorator
装饰
动态地给一个对象增加一些额外的职责,就增加的功能来说,Decorator 模式相比生成子类
更加灵活。
4
行为
型
Command
命令
将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化,对请求排队和
记录请求日志,以及支持可撤销的操作。
4
行为
型
State
状态
允许对象在其内部状态改变时改变他的行为。对象看起来似乎改变了他的类。
4
行为
型
Strategy
策略模
式
定义一系列的算法,把他们一个个封装起来,并使他们可以互相替换,本模式使得算法可以
独立于使用它们的客户。
3
创建
型
Builder
生成器
将一个复杂对象的构建与他的表示相分离,使得同样的构建过程可以创建不同的表示。
3
结构
型
Bridge
桥接
将抽象部分与它的实现部分相分离,使他们可以独立的变化。
3
行为
型
China of
Responsibilit
y
职责链
使多个对象都有机会处理请求,从而避免请求的送发者和接收者之间的耦合关系
剩余16页未读,继续阅读
高中化学孙环宇
- 粉丝: 9
- 资源: 338
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0