【零基础高效率学Python】第六天 面向对象
目录
一、概念
二、面向对象分析
三、面向过程向面向对象的思想迁移
四、面向过程和面向对象的区别
五、面向对象的专业术语
六、类的定义及使用
七、魔术方法
八、面向对象的三大特征
一、概念
面向对象在编程的时候尽可能去模拟现实世界,其中任何一个操作都需要一个实体来完成,实体就是动作的支配者,没有实体没有动作发生。
二、面向对象分析
第一步:分析那些动作由那些实体发出的。
第二步:定义这些实体,为其添加相应的属性及功能。
- 属性:就是实体固有的信息特征,本质就是以前的变量
- 功能:实体可以完成的动作,本质就是以前的函数或方法
第三步:让实体去执行相应的功能或动作。
三、面向过程向面向对象的思想迁移
1、以前面向过程编写代码:
- 首先考虑实现什么功能,然后调用什么函数,最后按部就班的实现需求
2、以后面向对象编写代码:
-
首先考虑有什么样的实体去实现什么样的功能
-
然后分装实体的属性及功能
-
通过实体实现对应功能
四、面向过程和面向对象的区别
1、面向过程与面向对象都可以实现模块化编程代买也可以重用,但是面向对象的模块化更深,数据更封闭更安全。
2、现象对象的思维方式更加贴近现实生活,更容易解决大型的复杂业务逻辑。
3、从前期开发角度来说,面向对象比面向过程更复杂,但从维护或扩展的角度来说,面向对象远比面向过程简单。
4、面向过程的代码执行效率更高。
五、面向对象的专业术语
(一)面向对象开发的三大流程
面向对象分析->面向对象设计->面向对象编程
(二)类
-
类是对现实世界一种模拟,在现实世界中任何一个实体都有一个类别
-
类就是具有相同或相似属性和动作的一组实体集合
(三)对象(object)
1、概念:是一种抽象概念,对象是类实例化的结果。
2、对象分为2部分:
- 静态属性:客观存在,不可忽视,如:人的姓名、性别……
- 动态属性:行为,对象执行动作,如:人能跑步
(四)总结
对象使用属性保存数据,对象使用方法管理数据。
六、类的定义及使用
(一)面向对象开发的基本流程
-
第一步:设计一个类
-
第二步:使用类名()方法创建对象,创建对象分成2步:
-
内存为对象分配空间
-
调用初始化方法_ _ init_ _ () 为对象初始化
-
(二)定义一个类
1、经典类:
class 类名: """类的帮助信息""" 代码
2、新式类:
class 类名(): """类的帮助信息""" 代码
3、注意
-
类名遵循标识符命名规则(数字、字母、下划线组成,不能以数字开头)。
-
类名为方法名区分开,应使用驼峰命名法,类中每个单词的首字母大写,而不使用下划线。
-
对象名都应小写,单词之间使用下划线间隔。
4、类本质也是一个特殊的对象
-
python一切皆为对象,类是一个特殊的对象即类对象。
-
程序运行时,类会被加载的到内存中,类对象只有一份,可以创建出多个对象实例。
(三)类的实例化
1、类的实例化就是把抽象的类具体实例化为现实世界的实体,即通过类得到对象。
2、分析:
-
定义完毕一个类之后是不会创建一个实例对象的,若类好比一个汽车的设计图纸,该图纸只能告诉你怎么去造车,但图纸本身不是一辆车,不能开走他,只能制作车
-
类本身什么都做不了,必须利用类得到一个实例化对象,利用对象实现功能
-
根据类创建出对象的过程称为实例化
3、格式:对象名 = 类名()
(四)类中self关键字
-
作用:指向类实例对象本身,用于访问类汇总属性和方法,在方法调用时会自动传递实际参数self。
-
总结:类中self就是谁实例化了对象,则self就指向该对象,本质为对象的首地址,即代表对象本身。
(五)通过_ _ init_ _ ()方法进行初始化
-
python中_ _ xx_ _ () 方法称为魔术方法,是就有特殊功能的函数
-
类创建后,手动编写_ _ init_ _ () 方法,类似于java的构造方法,创建对象时会被自动调用,用于默认属性值的初始化,使用双下划线开头和结尾,是一种特殊的约定,旨在区分其它方法
-
_ _ init_ _ (self) 本身再带self参数,必须时第一个位置,指向对象本身
(六)创建类的静态方法
-
在开发时,如果需要在类中封装一个方法,该方法需要做到:
-
既不需要其它对象调用,会自动执行
-
用于打印一些提示、帮助信息等功能
-
-
格式:@staticmethod,写在类中方法之前,用于修饰类中的方法,使其可以不创建类实例的情况下直接执行调用
-
优点:执行效率高,不需要默认的self参数
(七)创建类的属性
概念:定义在类中且在函数体外部的变量称为类属性,类属性是所有对象的公共属性,在所有类的对象中共享。
PS:类属性变更,对象属性也会变化。
注意:类属性用于计数、控制、包含某个对象。
七、魔术方法
(一)python中_ _ xx _ _()函数称为魔术(魔法)方法,具有特殊功能
(二)_ _ str _ _() 方法
-
当使用print()输出对象时,默认打印的是对象的内存地址
-
如果类中定义_ _ str_ _ ()方法,则若再次print()输出对象时会输出_ _ str_ _ ()方法return的结果
注意:类的内部定义_ _ str_ _ ()方法,其return的结果会返回一个字符串数据类型
(三)_ _ del_ _() 方法
-
称为删除方法或者析构方法
-
注意:当删除对象时,python解释器会默认调用该方法
注意:_ _ del_ _() 方法主要用于删除对象后的后续操作,如:关闭文件、关闭数据库连接等。
八、面向对象的三大特征
(一)面向对象的三大特征--封装
1、封装有2层含义
-
把主体的属性和方法卸载类里面的操作称为封装
class Person: # 封装属性 # 封装方法
-
封装可以为属性和方法添加私有权限
2、封装私有属性及私有方法
-
属性和方法分为两大类:
-
公有:无论在类内部还是类外部都可以对属性和方法进行操作
-
私有:不允许在类的外部对类内部的属性和方法进行操作
-
3、私有属性的访问限制
-
设置私有属性方法:在属性名或方法名前增加两个下划线_ _即可,例:self.__age = 18
4、私有属性或方法设置访问接口
-
如果需要在类外部访问私有属性或方法,需要通过定义的接口来实现
-
python中一般使用函数名为get_xx命名的接口函数来获取私有属性,使用set_xx来修改私有属性
注意:私有方法定义方式与私有属性一致,在方法名之前添加2个下划线即可
5、封装的意义
-
封装数据属性:明确区分内外,控制外部对隐藏的内部属性的操作,过滤掉异常数据
-
封装方法:降低程序复杂度
6、装饰器@property封装
-
作用:通过@property装饰器将一个方法转换为属性,从而实现调用方法时相当于调用属性,不需要园括号,代码更简洁
-
格式:@property
def 方法名(self):
方法体
(二)面向对象的三大特征--继承
继承:一个类从另一个类获得其成员的相关特性
派生:从一个已有的类中产生一个新的类,称为派生,继承与派生其实是从不同方向来描述相同的概念,本质一致
父类:也称为基类,被继承的类
子类:称为派生类或扩展类
扩展:在子类中增加一些自己特有的特性,称为扩展,只有继承没有扩展则继承无意义
单继承:一个类只能继承自另一个类,不能继承多个类,称为单继承
多继承:一个类同时继承了多个父类
(三)面向对象的三大特征--多态
1、概念:多态是指一类事物有多重形态,是一种使用对象的方式,子类重写父类方法后,调用不同的子类对象的相同父类方法,可以产生不同的结果
2、特点
- 多态依赖于继承
- 子类方法必须重写父类方法
- 当调用一个公共方法时,传递的对象不同,返回结果不同
都看到这里了,创作不易,大家点个赞再走呗!!!( ˃̶̤́ ꒳ ˂̶̤̀ )
相关文章
- 【Python成长之路】python 基础篇 -- global/nonlocal关键字使用
- python基础学习笔记(五)
- python基础学习笔记(七)
- python-面向对象-03_面向对象基础语法
- Python基础编程
- 小白学 Python 爬虫(13):urllib 基础使用(三)
- 【python基础】Linux环境下非root用户安装Python和第三方包
- 【第一篇】Python基础
- Python 零基础快速上手(与C/C++对比)
- 【Python基础】python爬虫之异步网络爬虫ǃ
- Python:python代码编程带你玩转双色球(了解双色球的概率逻辑)
- Python语言学习:基于python五种方法实现使用某函数名【func_01】的字符串格式('func_01')来调用该函数【func_01】执行功能
- Python之API:基于python语言调用华为云API(华为网站)实现特定功能
- Python基础——PyCharm版本——第三章、数据类型和变量(超详细)
- 100天精通Python(爬虫篇)——第47天:selenium自动化操作浏览器(基础+代码实战)
- Python每日一练——第7天:基础9题
- python 面向对象的概念及使用方法~(基础小知识)
- RobotFramewor自定义Python库
- Python: 渐进猜数字游戏 <7> 数字比较 与 猜数字游戏V0.1版
- python基础===一行 Python 代码实现并行(转)
- python基础===利用PyCharm进行Python远程调试(转)
- python基础=== itertools介绍(转载)
- python基础===八大排序算法的 Python 实现
- 【Python基础】python爬虫之异步网络爬虫ǃ
- p4.第一章 Python基础入门 -- 进制和码制 (四)
- Python 3 自动化运维之psutil获取系统基础信息
- 超级详细的python基础面向对象