Python学习之路-初识面向对象
简介
面向对象编程(英语:Object-oriented programming,缩写:OOP)是种具有对象概念的编程典范,同时也是一种程序开发的抽象方针。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性,对象里的程序可以访问及经常修改对象相关连的数据。在面向对象程序编程里,计算机程序会被设计成彼此相关的对象。
我们之前学习的编程方式就是面向过程的,面相过程和面相对象,是两种不同的编程方式,对比面向过程的特点,可以更好地了解什么是面向对象。
特点
面向过程
-
注重步骤与过程,不注重职责分工
-
如果需求复杂,代码会变得很复杂
-
开发复杂项目,没有固定的套路,开发难度很大!
面向对象
- 注重对象和职责,不同的对象承担不同的职责
- 更加适合应对复杂的需求变化,是专门应对复杂项目开发,提供的固定套路
- 需要在面向过程基础上,再学习一些面向对象的语法
类和对象
简介
类是对一群具有相同特征或者行为的事物的一个统称,是抽象的,不能直接使用。特征被称为属性,行为被称为方法。
对象是由类创建出来的一个具体存在,可以直接使用。由哪一个类创建出来的对象,就拥有在哪一个类中定义的属性和方法。
关系
类是模板,对象是根据类这个模板创建出来的,应该先有类,再有对象。类只有一个,而对象可以有很多个。不同的对象之间属性可能会各不相同。类中定义了什么属性和方法,对象中就有什么属性和方法,不可能多,也不可能少。
类的设计
在使用面相对象开发前,应该首先分析需求,确定一下,程序中需要包含哪些类!
在程序开发中,要设计一个类,通常需要满足一下三个要素:
- 类名这类事物的名字,满足大驼峰命名法
- 属性这类事物具有什么样的特征
- 方法这类事物具有什么样的行为
ClassName
。类名
名词提炼法分析整个业务流程,出现的名词,通常就是找到的类
属性和方法
- 对对象的特征描述,通常可以定义成属性
- 对象具有的行为(动词),通常可以定义成方法
基础语法
定义简单的类
定义一个只包含方法的类语法格式如下:
|
|
self
,暂时先记住,稍后介绍 self
创建对象
当一个类定义完成之后,要使用这个类来创建对象,语法格式如下:
|
|
方法中的 self
参数
由哪一个对象调用的方法,方法内的 self
就是哪一个对象的引用
print
输出对象变量,默认情况下,是能够输出这个变量引用的对象是由哪一个类创建的对象,以及在内存中的地址(十六进制表示)在类封装的方法内部,self
就表示当前调用方法的对象自己。调用方法时,程序员不需要传递self
参数。
在方法内部,可以通过 self.
访问对象的属性,也可以通过 self.
调用其他的对象方法。
在类的外部,通过 变量名.
访问对象的属性和方法,在类封装的方法中,通过 self.
访问对象的属性和方法。
初始化方法
当使用 类名()
创建对象时,会自动执行以下操作:
- 为对象在内存中分配空间 —— 创建对象
- 为对象的属性设置初始值 —— 初始化方法(
init
)
__init__
方法,__init__
是对象的内置方法,__init__
方法是 专门用来定义一个类具有哪些属性的方法在 __init__
方法内部使用 self.属性名 = 属性的初始值
就可以定义属性,定义属性之后,再使用类创建的对象,都会拥有该属性。
内置方法和属性
__del__
方法
当使用 类名()
创建对象时,为对象分配完空间后,自动调用 __init__
方法,当一个对象被从内存中销毁前,会自动调用 __del__
方法。
__init__
改造初始化方法,可以让创建对象更加灵活,__del__
如果希望在对象被销毁前,再做一些事情,可以考虑一下 __del__
方法类名()
创建,生命周期开始,一个对象的 __del__
方法一旦被调用,生命周期结束,在对象的生命周期内,可以访问对象属性,或者让对象调用方法。__str__
方法
如果在开发中,希望使用 print
输出对象变量时,能够打印自定义的内容,就可以利用__str__
这个内置方法了
__str__
方法必须返回一个字符串