一、面向对象和面向过程的对比 1、面向对象 oop:object oriented programming 面向对象的基本概念 面向对象的程序设计核心是对象 我们之前学习的编程方式就是面向过程的 面向过程和面向对象,是两种不同的编程方式 对比面向过程的特点,可以更好的了解什么是面向对象 面向对象:--谁来做? 相比较函数,面向对象是更大的封装,根据职责在一个对象中封装多个方法 1)在完成某一个需求前,首先确定职责--要做的事(方法) 2)根据职责确定不同的对象,在对象内部封装不同的方法(多个) 3)最后完成代码,就是顺序的让不同的对象调用不同的方法 特点: 1)注重对象和职责,不同的对象承担不同的职责 2)更加适合对复杂的需求变化,是专门应对复杂项目的开发,提供的固定套路 3)需要在面向过程的基础上,再学习一些面向对象的语法 过程和函数(都是对一段功能的代码进行封装) 过程:是早期的一个编程概念 过程类似于函数,只能执行,但是没有返回值 函数:不仅能执行,还可以返回结果(return) 2、面向过程:---侧重于怎么做? 面向过程的程序设计的核心是过程 1)把完成某一个需求的 所有步骤 从头到尾 逐步实现 2)根据开发要求,将某些功能独立的代码封装成一个又一个函数 3)最后完成的代码,就是顺序的调用不同的函数 特点: 1)注重步骤与过程,不注重职责分工 2)如果需求复杂,代码会变得很复杂 3)开发复杂项目,没有固定的套路,开发难度很大 二、类和对象 1、类和对象的概念 类:是对一群具有相同特征或行为的事物的一个统称,不能直接使用(比如:飞机制造图纸不能飞上天) 特征:属性 行为:方法 对象:由类创建出来的一个具体的存在,可以直接使用(用图纸制造出来的飞机可以飞上天) 在程序开发中:应该先有类 再有对象 2、类的设计 1)类名:这类事物的名字,满足大驼峰命名法 大驼峰命名法 每一个单词的首字母大写 单词与单词只见没有下划线 2)属性:这个类创建出的对象有什么样的特征 3)方法:这个类创建出的对象有什么样的行为 当一个类定义完成后,要使用这个类来定义对象 语法格式:对象名 = 类名( 定义只包含方法的类 class 类名: def 方法1(self): pass def 方法2(self): pass 示例: 运行结果为: self:哪一个对象调用的方法,self就是哪一个对象的引用 在类封装的方法内部,self就表示当前调用方法的对象自己 调用方法时,程序员不需要传递self参数(但是定义的时候,第一个参数必须是self) 在方法内部:可以通过self.访问对象的属性 在方法内部:可以通过self.调用其他的对象方法 运行结果为: 3、初始化方法 初始化方法:__init__ 是python对象的内置方法 __init__方法是专门用来定义一个类具有哪些属性和方法的 初始化方法 我们现在已经知道了使用 类名( ) 就可以创建一个对象 当使用类名( )创建对象时,python的解释器会自动执行以下操作: 1.为对象在内存中分配空间--创建对象 2.调用初始化方法为对象的属性设置初始值--初始化方法(__init__) 这个初始化方法就是__init__方法,__init__是对象的内置方法 __init__方法是专门用来定义一个类具有哪些属性的方法 运行结果为: 4、内置方法 1)__del__内置方法 在python中 当一个对象被从内存中销毁前(把这个对象从内存中删除掉),会自动调用__del__方法 应用场景 __del__如果希望在对象被销毁前,再做一些事情,可以考虑一下__del__方法 del关键字,可以从内存中删除一个对象,del关键字自己调用了__del__方法 2)__str__内置方法 __str__方法:返回对象的描述信息 print 对象 _str__方法: 在python中,使用python输出对象变量,默认情况下,会输出这个变量引用的对象是由哪>一个类创建的对象,以及在内存中的地址(十六进制表示) 如果在开发中,希望使用print输出对象变量时,能够打印自定义的内容,就可以利用__str__这个内置方法了 运行结果为: 3)生命周期的定义 生命周期 一个对象从调用类名()创建,声明周期开始 一个对象的__del__方法一旦被调用,生命周期就结束 在对象的生命周期内,可以访问对象的属性,调用对象的方法