当前位置: 首页 > news >正文

[01-03-03].第15节:面向对象 - 三大特征

人工智能学习大纲


一、面向对象的三大特性:

面向对象编程:简单理解是:基于模板(类)去创建实体(对象),最终使用对象完成功能开发,它具有封装、继承和多态的特征

1.1.封装:

a.封装介绍:

  • 1.封装表示的是,将现实世界事物的:属性和行为封装到类中,描述为:成员变量和成员方法,从而完成程序对现实世界事物的描述
    在这里插入图片描述
  • 2.封装对用户隐藏的属性和行为
    • 现实世界中的事物,有属性和行为,但是不代表这些属性和行为都是开放给用户使用的,就比如一台手机的功能,有的用户就可以使用,有的是不对用户开放的
      在这里插入图片描述
  • 3.私有成员:在类中提供仅供内部使用的属性和方法,而不对外开放(类对象无法使用)
    • 作为现实事物在程序中映射的类中提供了私有成员的形式来支持:私有成员变量和`私有成员方法
    • 定义私有成员的方式非常简单,只需要遵守下面的规则即可:
      • 私有成员变量:变量名以__开头(2个下划线)
      • 私有成员方法:方法名以__开头(2个下划线)
        在这里插入图片描述
    • 私有方法无法直接被类对象使用
      在这里插入图片描述
    • 私有变量无法赋值,也无法获取值
      在这里插入图片描述
    • 私有成员无法被类对象使用,但是可以被其它的成员使用
      在这里插入图片描述

b.封装的使用:

在这里插入图片描述


1.2.继承:

a.语法:

class 类名(父类名字):
	类内容体
  • 继承分为:单继承和多继承,继承表示:将从父类那里继承(复制)成员变量和成员方法(不含私有)

b.单继承:

在这里插入图片描述

c.多继承:

1、语法:

  • 1.Python的类之间也支持多继承,即一个类,可以继承多个父类
    在这里插入图片描述
class 类名(父类1,父类2,父类3...........):
	类的内容体

在这里插入图片描述

2、实例化对象测试:

在这里插入图片描述

3、.说明:

  • 1.多个父类中,如果有同名的成员,那么默认以继承顺序(从左到右)为优先级。即:先继承的保留,后继承的被覆盖
    在这里插入图片描述
  • 2.pass关键字的作用是:pass是占位语句,用来保证函数(方法)或类定义的完整性,表示无内容,空的意思

d.复写:

1、概念:

  • 1.子类继承父类的成员属性和成员方法后,如果对其“不满意”,那么可以进行复写。即:在子类中重新定义同名的属性或方法即可

2、调用父类同名成员

  • 1.一旦复写父类成员,那么类对象调用成员的时候,就会调用复写后的新成员
  • 2.如果需要使用被复写的父类的成员,需要特殊的调用方式
    • 方式1:调用父类成员
      • 使用成员变量:父类名.成员变量
      • 使用成员方法:父类名.成员方法(self)
    • 方式2:使用super()调用父类成员
      • 使用成员变量:super().成员变量
      • 使用成员方法:super().成员方法()

在这里插入图片描述


1.3.多态:

a.定义:

  • 1.多态:指的是多种状态,即完成某个行为时,使用不同的对象会得到不同的状态
  • 2.多态常作用在继承关系上.。比如函数(方法)形参声明接收父类对象,实际传入父类的子类对象进行工作。即:以父类做定义声明,以子类做实际工作,用以获得同一行为, 不同状态
    在这里插入图片描述

b.举例:

  • 1.如下图所示:同样的行为(函数),传入不同的对象,得到不同的状态
    在这里插入图片描述

c.抽象类:

  • 1.如上图所示中,父类Animal的speak方法,是空实现,这种设计的含义是:父类用来确定有哪些方法和具体的方法实现,由子类自行决定,这种写法,就叫做抽象类(也可以称之为接口)
    • 抽象类:含有抽象方法的类称之为抽象类
    • 抽象方法:方法体是空实现的(pass)称之为抽象方法
  • 2.为何使用抽象类(接口):提出标准后,不同的厂家各自实现标准的要求
    在这里插入图片描述
  • 3.抽象类多用于做顶层设计(设计标准),以便子类做具体实现。也是对子类的一种软性约束,要求子类必须复写(实现)父类的一些方法,并配合多态使用,获得不同的工作状态
    在这里插入图片描述

二、类型注解:

2.1.为何需要类型注解:

  • 1.在PyCharm中编写代码,我们经常能够遇到如下提示,这是因为PyCharm确定这个对象,是list类型:
    在这里插入图片描述
  • 2.当自己定义PyCharm时,不会再有任何提示了,这是因为PyCharm不确定func是什么类型:
    在这里插入图片描述

因为PyTharm无法通过代码确定应该传入什么类型,需要使用类型注解进行实现提示:

2.2.类型注解定义:

  • 1.Python在3.5版本的时候引入了类型注解,以方便静态类型检查工具,IDE等第三方工具
  • 2.类型注解:在代码中涉及数据交互的地方,提供数据类型的注解(显式的说明)

2.3.类型注解功能:

  • 1.帮助第三方IDE工具(如PyCharm)对代码进行类型推断,协助做代码提示
  • 2.帮助开发者自身对变量进行类型注释
  • 4.类型注解支持:
    • 变量的类型注解
    • 函数(方法)形参列表和返回值的类型注解

2.4.类型注解的语法:

a.变量的类型注解:

a1.第一种方式:语法:变量: 类型
  • 1.基础数据类型注解:
    在这里插入图片描述
  • 2.类对象类型注解
    在这里插入图片描述
  • 3.基础容器类型注解
    在这里插入图片描述
  • 4.容器类型详细注解:
    在这里插入图片描述

注意:

  • 元组类型设置类型详细注解,需要将每一个元素都标记出来
  • 字典类型设置类型详细注解,需要2个类型,第一个是key第二个是value
  • 5.在注释中进行类型注解,语法是:# type: 类型
    在这里插入图片描述

b.函数(方法)的类型注解:

b1.函数(方法)的类型注解 - 形参注解
  • 1.现存现象分析:
    在这里插入图片描述
  • 2.函数和方法的形参类型注解语法:
    在这里插入图片描述
b2.函数(方法)的类型注解 - 返回值注解:
  • 1.语法:
    在这里插入图片描述
  • 2.举例:
    在这里插入图片描述
b3.Union类型:
  • 1.问题分析:
    在这里插入图片描述

使用Union[类型, ......, 类型]可以定义联合类型注解

  • 2.使用Union的时候,需要先导包:
    在这里插入图片描述
  • 3.Union联合类型注解,在变量注解、函数(方法)形参和返回值注解中,均可使用:
    在这里插入图片描述

三、综合案例:

3.1.需求:

  • 1.某公司,有2份数据文件,现需要对其进行分析处理,计算每日的销售额并以柱状图表的形式进行展示
    • 1月份数据是普通文本,使用逗号分割数据记录,从前到后分别是(日期,订单id,销售额,销售省份)
      在这里插入图片描述
    • 2月份数据是JSON数据,同样包含(日期,订单id,销售额,销售省份)
      在这里插入图片描述

在这里插入图片描述

3.2.分析:

在这里插入图片描述

3.3.编码:

a.实现步骤:

在这里插入图片描述

b.编码实现:

  • 1.第一步:
    在这里插入图片描述

  • 2.定义抽象类:
    在这里插入图片描述

  • 3.编写实现类,读取普通文件:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 4.编写实现类,读取json文件:
    在这里插入图片描述

在这里插入图片描述


相关文章:

  • PL/SQL语言的扩展运算符
  • C/C++中的条件编译指令#if
  • LVS-DR模式配置脚本
  • LeetCode 热题 100----2.移动零
  • Grid 布局:从入门到精通,一篇就够了—— 探索最强大的 CSS 布局系统
  • (C语言)习题练习 (sizeof和strlen)
  • 关于功耗检测功能开发笔记
  • Python字符串对齐哲学探微与东方字符补偿算法(授权DeepSeek撰写)
  • uniapp生命周期vue生命周期有何异同?
  • XDP/eBPF来包过滤-已上机验证
  • UniApp 生命周期钩子的应用场景
  • es6什么是暂时性死区,为何会存在
  • 买卖股票的最佳时机(js实现,LeetCode:121)
  • 大模型tokenizer重构流程
  • el-date-picker时间范围 编辑回显后不能修改问题
  • RedisTemplate和RedissonClient适用的场景有什么不同
  • 2025年优化算法:龙卷风优化算法(Tornado optimizer with Coriolis force,TOC)
  • 48days强训——day2
  • Axure RP9教程 :轮播图(动态面板) | 头部锁定
  • Python---数据分析(Pandas八:二维数组DataFrame数据操作一: 数据清洗,数据转换)
  • 一个留美学生的思想转向——裘毓麐的《游美闻见录》及其他
  • 贞丰古城:新垣旧梦间的商脉与烟火
  • 消息人士称俄方反对美国代表参加俄乌直接会谈
  • 俄外交部:俄乌伊斯坦布尔谈判改在当地时间15日下午举行
  • 重庆发布经济犯罪案件接报警电子地图,企业可查询导航属地经侦服务点
  • 中东睿评|特朗普中东三国行:喧嚣的形式与空洞的实质