面向过程和面向对象
面向过和面向对象是两种编程风格。
- 面向过程:即怎么去实现。主要虑功能的实现步骤和过程,多使用函数相互组合调用实现。
- 面向对象:即谁去实现,怎么配合。主要考虑动作的主体和相互关系,使用类的继承或组合实现。
以下是将大象放进冰箱,面向过程和面向对象的不同操作思路。
graph LR
subgraph 面向对象-按主体归类
D([冰箱])-->D1[开门]
D-->D2[关门]
E([大象])-->E1[进入冰箱]
end
subgraph 面向对象-使用对象操作
F([冰箱.开门]) --> G([大象.进入冰箱]) -->H([冰箱.关门])
end
subgraph P[面向过程]
A[打开冰箱门]-->B[把大象放进去] --> C[关上冰箱门]
end
面向对象将不同的操作按主体进行分组,然后指挥不同的对象组合完成不同的操作
类与实例
和函数声明和函数调用一样,面向对象也分为定义和使用两部分。
通常我们使用一种抽象的泛指概念来描述一类事物,如人类,动物,猫,冰箱等等,这种问称之为类。
而符合该类的某一个具体的事物,如张三、一只名为泡芙的猫、我家的西门子冰箱等等,这种称为实例,即一个具体的对象。
张三是人类的实例,泡芙是猫的实例,我家的西门子冰箱是冰箱的实例。
面向对象,一般的使用方法为:
- 定义类,描述对象属性和对象操作
- 调用类创建出一个具体的实例,使用这个实例调用其具体操作
以猫类和泡芙为例,实现代码如下。
class Cat: # 定义类,使用class关键字
def talk(self): # self指具体具体的每一个实例对象,这也被称为实例绑定方法,即实例方法
print('miao u~')
paofu = Cat() # 创建实例
paofu.talk() # 调用实例方法
初始化时传入参数
对象属性和对象方法
类属性和类方法
静态方法
面向对象的3大特征
- 封装
- 继承
- 多态