类与OOP 基础

版权声明:孤 https://blog.csdn.net/Wu000999/article/details/89225903

类是在Python实现支持继承的新种类的对象的部 件。类是Python面向对象程序设计(OOP)的主要工具。
OOP提供了一种不同寻常而往往更有效的检査稈序的方 式,利用这种设计方法,我们分解代码,把代码的冗余度降至最低,并且通过定制现有的代码来编写新的程序,而不是在原处进行修改。

在Pyhon中,OOP完全是可选的,并且在初学阶段不需要使用类。实际上,可以用较简单的结构,例如函数,甚至简单顶层脚本代码,这样就可以做很参 事。因为妥善使用类需要一些预先的规划。因此和那些采用战术模式工作的人相比(时间有限),采用战略模式工作的人(做长期产品开发)对类会更感兴趣一些。

为何使用类
类就是一种定义新种类的东西的方式,它反映了在程序领域中的真实对象。

从更具体的程序设计观点来看,类是Python的程序组成单元,就像函数和模块一样:类是封装逻辑和数据的另一种方式。实际上,类也定义新的命名空间,在很大程度上就像模块。但是,和我们已见过的其他程序组成单元相比,类有三个重要的独到之处,使其在建立新对象时更为有用。

多重实例
类基本上就是产生对象的工厂。每次调用一个类,就会产生一个有独立命名空间的 新对象。每个由类产生的对象都能读取类的属性,并获得自己的命名空间来储存数 据,这些数据对于每个对象来说都不同。
通过继承进行定制
类也支持OOP的继承的概念。我们可以在类的外部重新定义其属性从而扩充这个类。更通用的是,类町以建立命名空间的层次结构,而这种层次结构町以定义该结 构中类创建的对象所使用的变量名。
运算符重载
通过提供特定的协议方法,类可以定义对象来响应在内置类型上的几种运算。例 如,通过类创建的对象可以进行切片、级联和索引等运算。Python提供了一些可以 由类使用的钩子,从而能够中断并实现任何的内置类型运算。

属性继承搜索
Python中OOP的理解和使用都很简单。作 为动态类型脚本语言,Python把其他工具中让OOP隐藏的语法杂质和复杂性都去掉了。 实际上,Python中大多数OOP的故事,都可简化成这个表达式:

object・attribute

当我们对class 语句产生的对象使用这种方式时,这个表达式会在Python中启动搜索一搜索对象连接 的树,来寻找attribute首次出现的对象。当类启用时,上边的Python表达式实际上等于下列自然语言。
找出attribute首次出现的地方,先搜索object.然后是该对象之上的所有类,由 下至上,由左至右

换句话来说,取出属性只是简单地搜索“树”而已。我们称这种搜索程序为继承,因为 树中位置较低的对象继承了树中位置较高的对象拥有的属性。当从下至上进行搜索时, 连接至树中的对象就是树中所有上层对象所定义的所有属性的集合体,直到树的最顶端。


类是实例工厂。类的属性提供了行为(数据以及函数),所有从类产生的实例都继承该类的属性(例如,通过时薪和小时数计算员工薪水的函数)。
实例(对象 )
代表程序领域中具体的元素。实例属性记录数据,而每个特定对象的数据都不同 (例如,一个员工的社会安全号码)。

就搜索树来看,实例从它的类继承属性,而类是从搜索树中所有比它更上层的类中继承属性。

猜你喜欢

转载自blog.csdn.net/Wu000999/article/details/89225903