面向过程编程:首先分析出解决问题所需要的步骤(即“第一步做什么,第二步做什么,第三步做什么”),然后用函数实现各个步骤,再依次调用。
而面向对象编程,会将程序看作是一组对象的集合(还记得对象包括类对象和实例对象吧)。
用这种思维设计代码时,考虑的不是程序具体的执行过程(即先做什么后做什么),而是考虑先创建某个类,在类中设定好属性和方法,即是什么,和能做什么。
接着,再以类为模版创建一个实例对象,用这个实例去调用类中定义好的属性和方法即可。
用类编写一个直观的好处就是参数的传递会比普通函数要省事很多,也不必考虑全局变量和局部变量,因为类中的方法可以直接调用属性。
可想而知,当项目难度越大,需要的参数越多,用类编写在程序的可拓展性、可读性、维护成本都会更胜一筹。
这就是面向对象编程:以对象为中心,将计算机程序看作一组对象的集合。对比图如下:
总结一下:和之前说过的函数类似,面向对象编程实际上也是一种对代码的封装。只不过,类能封装更多的东西,既能包含操作数据的方法,又能包含数据本身。所以,代码的可复用性也更高。
而且,对于需要长期更新的代码而言,面向对象编程写成的代码结构会更清晰。所以,代码的可读性、可拓展性和可维护性这几个方面都会优于面向过程编程。
还有一点不得不提的是:面向对象编程,将代码具体的数据和处理方法都封装在类中,让我们不用完全了解过程也可以调用类中的各种方法。
这个优势让我们可以在 Python 中轻松地调用各种标准库、第三方库和自定义模块(可以简单理解成别人写好的类),这是Python 之所以这么强大和热门的主要原因之一。
这也是为什么我在开头说“面向对象编程,会为你打开一个新的世界”。将他人封装好的代码为自己所用,效率和能做的事情自然是天壤之别。