初识 python - 面向对象编程

目录

1、编程模式的变迁

2、面向对象编程基础知识

3、Python面向对象的快速实现

· 创建对象和类

4、面向对象中的四种方法及变量(★)

1)、实例方法

2)、类方法

3)、静态方法

4)、普通方法

5)、四种方法的区别


 

1、编程模式的变迁

同其他语言一样,python编程模式发展也是经历了从面向过程编程 -> 函数编程 -> 面向对象编程 。这里再稍微介绍一下:面向过程:根据业务逻辑从上到下写垒代码 ;函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 ;面向对象:对函数进行分类和封装,让开发“更快更好更强…” 。

面向过程编程最易被初学者接受,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,即:将之前实现的代码块复制到现需功能处。随着时间的推移,开始使用了函数式编程,即将重复的代码定义成一个函数,被其他代码重复调用,增强代码的重用性和可读性。之后随着业务复杂度的不断提高,面向对象编程模式使得我们开发变得更加灵活,即定义一个类,可以提供多种服务,使得调用更加灵活,代码的维护更加方便。

面向对象编程模式降低代码之间的耦合度,强调模块开发的思想 ;具有自由拆分和组合功能,以不同的组合形式体现,从而提供不同的服务,也提高了团队协作开发的效率。

 

2、面向对象编程基础知识

对象就是类的一个具体表现事物,类就是类别的意思,同一类别的事物都会有共同的属性(状态)或 方法(行为),任何对象都存在着自己独有的状态和行为,而对象就是由状态+行为所组成的,状态是描述事物的名词形式,行为是描述事务的动词形式。

任何对象都拥有相同的属性和方法(即类中的所有属性和方法),同时每个对象的属性或方法会有独特的个异性。

三大特征 :

继承:子类拥有父类的可访问属性和方法,提高代码的重用性 ;封装:通过语句块保护变量或对象的作用域,提高代码的安全性 ;多态:各种重载和重写的机制,提高代码灵活性(特别说明:Python OOP没有多态特性)。

 

3、Python面向对象的快速实现

· 创建对象和类

(1)、创建类:class 是关键字,表示类 ,创建语法

初识 python - 面向对象编程_第1张图片

示例:

初识 python - 面向对象编程_第2张图片

 

(2)、创建对象:

初识 python - 面向对象编程_第3张图片

 

4、面向对象中的四种方法及变量(★)

python3 面向对象的概念中,关于类的方法一共有四种:实例方法 ( instanceMethod )(使用频次最多) ;类方法(classMethod)(根据需求适度);静态方法(staticMethod)(根据需求适度);普通方法(ordinaryMethod)(使用频次很少 ,python3不支持)。四种方法的区别在于定义语法格式上以及对各种类型变量的访问权限上的不同。下面各个介绍一下:

1)、实例方法

实例方法是属于实例对象的,但也可以使用类直接调用,但两者调用的方式有区别(传递参数个数上面)。实例方法在定义中,第一个参数必须为 self (当然参数名称也可以随意定义,但是 self 是python默认的规定最好不修

实例方法定义的语法规范:def 方法名称 (self [, arg1[, arg2, …[, argN]]]) :第一个参数 self 代表 调用该方法的实例对象,在使用实例对象调用方法的时候可以忽略第一个参数,只需传递满足在实例方法定义过程中的 n-1 个后续参数数量即可 ;而类调用时,需要传递与定义数量匹配的n个参数,第一个 self 只当做一个参数变量名称而已

 

特殊的类实例方法 —— 构造方法 __init__

构造方法是类成员方法中特殊的一种方法,其方法名称为 __init__( ),该方法无需对象通过访问操作符调用,在类实例化对象的过程中自动调用。构造方法的作用有两个:为对象创建内存空间,以及对实例对象的实例变量参数初始化 。声明

初识 python - 面向对象编程_第4张图片

示例:

初识 python - 面向对象编程_第5张图片

 

特殊的类实例方法2 —— 实例对象输出 __str__ :

当我们使用 print() 函数输出使用类创建好的实例对象的时候,默认输出的是当前实例对象的十六进制内存地址

初识 python - 面向对象编程_第6张图片

 

实例变量(成员属性):

与实例方法遥相呼应的是实例变量,实例变量 属于类创建的实例对象的,这些属性是所有实例对象都拥有的。只不过每个实例对象的属性值各异。

实例变量均在构造方法__init__( )中 声明并初始化。语法:self 实例变量名称 = 值(self 代表当前创建的实例对象),类中的实例方法均可以访问实例变量。一般在创建构造方法的时候,会利用构造方法为类实例变量(成员属性)初始化的这一典型作用。如下:

初识 python - 面向对象编程_第7张图片

实例变量的两种输出方式:

我们可以通过实例对象定义类实例方法两种方式实现对初始化好的对象实例变量进行输出。

(1)、通过实例对象实现对类创建的对象实例变量进行输出

初识 python - 面向对象编程_第8张图片

 

(2)、通过定义类的实例方法实现对类创建的对象实例变量进行输出

初识 python - 面向对象编程_第9张图片

 

2)、类方法

类方法是属于类本身的,但也可以使用对象实例调用,两者调用的方式有所区别(传递参数个数上面)。类方法在定义中,第一个参数必须为 cls (当然参数名称也可以随意定义,但是 cls 是python默认的规定最好不修改)。

初识 python - 面向对象编程_第10张图片

第一个参数 cls 代表 当前的类,在使用类直接调用方法的时候忽略第一个参数,只需传递满足在实例方法定义过程中的 n-1 个后续参数数量即可;而类的对象实例调用时,同样需要传递与定义数量匹配的n-1个参数

初识 python - 面向对象编程_第11张图片

类变量与类方法 可以成对使用,同样类方法也可访问操作实例变量。类变量声明在类中,类中的各种类型方法(除了普通方法之外)均可以访问。

初识 python - 面向对象编程_第12张图片

类方法属于类,因此类方法也可以直接访问实例变量

 

3)、静态方法

静态方法是属于类本身的,但也可以使用对象实例调用,两者调用的方式区别在传递参数个数上面。

初识 python - 面向对象编程_第13张图片

 

静态方法可以被类或对象实例调用,在调用的时候,需要传递与定义同等个数的参数。python3 中没有实际意义上的静态变量,由于 python 编程语言为动态语言,因此严格意义上的静态变量是没有必要的,但是静态方法可以访问实例变量和类变量

静态方法也可以访问操作实例变量

初识 python - 面向对象编程_第14张图片

 

4)、普通方法

普通方法在类中的定义与定义一个函数无任何区别,可以被类直接调用但不能被对象实例调用。普通方法无法访问实例变量和类变量。

类方法定义的语法规范: def 方法名称 ([, arg1[, arg2, …[, argN]]]) :

 

5)、四种方法的区别

初识 python - 面向对象编程_第15张图片

 

你可能感兴趣的:(Python)