一. 定义及优点
面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西。
优点是:极大的降低了程序的复杂度
缺点是:一套流水线或者流程就是用来解决一个问题,生产汽水的流水线无法生产汽车,即便是能,也得是大改,改一个组件,牵一发而动全身。
应用场景:一旦完成基本很少改变的场景,著名的例子有Linux內核,git,以及Apache HTTP Server等。
面向对象的程序设计的核心是对象(上帝式思维)
优点是:解决了程序的扩展性。对某一个对象单独修改,会立刻反映到整个体系中。
缺点:可控性差,无法向面向过程的程序设计流水线式的可以很精准的预测问题的处理流程与结果,面向对象的程序一旦开始就由对象之间的交互解决问题,无法预测最终结果。
应用场景:需求经常变化的软件,一般需求的变化都集中在用户层,互联网应用,企业内部软件,游戏等。
面向对象的程序设计并不是全部。对于一个软件质量来说,面向对象的程序设计只是用来解决扩展性。
二. 类与对象
1. 定义
python中一切皆为对象,且python3统一了类与类型的概念,类型就是类
特征与技能的结合体就是一个对象。从一组对象中提取相似的部分就是类,类是所有对象都具有的特征和技能的结合体
在python中,用变量表示特征,用函数表示技能,因而类是变量与函数的结合体,对象是变量与方法(指向类的函数)的结合体
2. 类
(1) 类的声明
class 类名: #类名一般首字母大写
pass
(2) 类的引用
类有两种引用方式:属性引用和实例化
属性引用:类名.属性
实例化:类名()
类名加括号就是实例化,会自动触发__init__函数的运行,可以用它来为每个实例定制自己的特征。self的作用是在实例化时自动将对象/实例本身传给__init__的第一个参数,self可以是任意名字,但一般默认为self。
3. 对象
(1) 实例化
对象是关于类而实际存在的一个例子,即实例
(2) 引用
对象/实例只有一种引用:属性引用
(3) 特点
对象/实例本身只有数据属性,但是python的class机制会将类的函数绑定到对象上,称为对象的方法,或者叫绑定方法