面向过程编程
关键在于过程
过程指的是先干什么,再干什么,最后干什么
完成某个任务的具体步骤
注意:面向过程与函数编程是完全不同的
优点:将简单的问题拆分为多个问题,然后按照顺序一步一步完成使问题简单化,流程化
缺点:程序按照属性来编写导致扩展性极差
使用场景:对于扩展性要求低的应用程序
例如:操作系统内核,运维编写的shell脚本等
面向对象编程
OOP是面向对象编程的缩写
是一种编程思想
关键在于对象,对象是一系列特征和行为的结合体
使用面向对象来编程时
需要将程序员看作是上帝,不是去思考具体的实现步骤
重点关注的是什么样的对象可以完成这个事情
面向过程想的是:怎么做
面向对象想的是:谁来做
优点:扩展性高,修改单独某个对象,不会影响到其他对象
复用性,灵活性,降低耦合度
缺点:相对于面向过程而言,编程的复杂度提高了
无法准确预知执行结果
使用场景:对扩展性要求较高的应用程序
类
类是一堆对象,相似的特征和相似的行为的结合体,是一种抽象的概念
类和对象的关系:
生活中先有对象,再有类
程序中先有类,再由类实例化对象
使用面向对象编程思想时,第一步要分析需求中涉及到的对象和类
注意:站在不同的角度分析得到的类完全不同
定义一个类时,就会产生一个名称空间
类名的命名规范是:驼峰体 所有首字母大写
初始化
创建对象后可以同点来增加属性
但是不推荐,会造成代码冗余
调用__init__()函数可以再对象实例化的时候自动执行
属性查找顺序
对象既可以访问自己的名称空间中的内容,也可以访问类中的内容
如果出现相同的内容优先访问自己的
绑定方法
方法指的是函数
其实就是把函数和对象进行绑定
对象本质就是一个数据容器里面存储多个属性
函数是用于处理数据的代码段
对象的精髓就在于将数据和处理数据的函数绑定再一起
绑定方法的好处是只要拿到了对象就同时拿到了要处理的数据以及处理数据的方法
通常情况下,类中的大多数函数都是绑定给对象的方法
当使用对象来调用绑定方法时,会自动将对象作为第一个参数传入
当使用类来调用绑定方法时,需要手动传入第一个参数
默认情况下,类中的方法都是绑定给对象的
类中的方法分为两类
1 绑定方法
1 对象的绑定方法
2 类的绑定方法
语法:使用@classmethod装饰器
使用场景:当一个方法的执行逻辑需要访问类中的属性时,就应该作为类的绑定方法
2 非绑定方法
语法:使用@staticmethod装饰器
使用场景:当一个方法的执行逻辑不需要访问对象也不需要类中的数据时使用非绑定方法