python每日学12:面向对象的编程

背景:最近有些时间,打算把python每日学的计划继续执行起来。由于不知道从何入手,就暂定从学习《python学习手册》开始,这本书也是python领域的一本权威著作,各方面都写的非常详细,读起来很有帮助,就是篇幅有点多,一共有1467页。今天学习的是该书第26章《OOP:宏伟蓝图》。

书里的原始内容我就不多写了,只谈谈该章对我的一些启发:

面向对象的根本目的是什么?

我个人理解,面向对象的根本目的就是减少重复代码,就是程序员为了提高效率(偷懒)创造出来的东西。其实这有点类似于现实中的成熟工业品的模块化设计 ,比如说电脑,内部元件都是模块化的,有cpu、主板、电源、显卡等各种设备,一组装就弄好了。现实中把这件部件组装起来就是人要实现的功能了。而面对大型软件的开发,走向面向对象是一种必然,只不过组装这个过程有一部分放到了程序里面,相当于程度给定义了一个类的概念,而在现实中,电脑是存在人大脑里的一个概念。不用再先行定义了。

实事上,书上的一些看法也是这样的:

……但如果合理使用,那么类所支持的代码我不用的方式是Python其他程序组件难以提供的。事实上,代码重用也是它们最重要的目的。

OOP不仅仅是一门技术,更是一种经验

……直到你有机会研究程序员如何将这些概念运用于较大系统之前,你可能难以理解使用这些术语的原因。OOP不仅仅是一门技术,更是一种经验.

这句话我觉得说的特别贴切,oop确实不仅仅是一种技术,如果只是学oop,那就会有种困惑,不知道何时需要用oop,但实际上,只要在用程序处理较为复杂的问题的时候,可能就需要用到OOP。

妥善使用类需要一些预先的规划

由于妥善使用类需要一些预先的规划,因此相比于那些采用战术模式工作的人(时间有限),采用战略模式工作的人(做长期产品开发)对类会更感兴趣一些。

确实如此,一些小的程序根本用不上面向对象,直接写函数,写代码就可以了,但在稍微复杂一点的程序中,就会发现函数与函数之间可能需要传递数据,一些函数需要共用一些数据,某些函数在一个范围内服务,不想他的影响超出范围内,又不想别的函数影响范围内的东西,诸如此类的需求就需要用面向对象的方法。虽然python的包也能解决类似的一些问题,但用起来总是没有类更方便的。python的包和模块是从物理上把代码拆分开来,而类是从逻辑上把代码拆分开来。
使用类需要提前对程序做一定的设计,这会带来一些工作量,并且良好的设计也不是一件很容易的事,所以带来了一定的复杂度。

……面向对象模型与经典的过程加记录的数据处理模型相比,并没有太多的差异。在OOP中,实例就像是带有“数据”的记录,而类则是处理这些记录的“程序”。不过OOP中还有继承层次的概念,这与以往的模型相比能更好的支持软件定制。

继承让代码也以更好的支持定制。

你可能感兴趣的:(Python每日学,Python,python,开发语言)