【python】面向对象语言的特性

news2024/11/24 9:10:10

面向对象语言的特性

  • 封装
  • 继承
    • 继承定义
    • 继承下的方法重写
  • 类型注解
    • 变量类型注解
    • 函数(方法)类型注解
    • Union 联合类型注解
  • 多态
    • 定义
    • 抽象类

面向对象语言的三大特性:封装、继承、多态
本文主要来介绍这三个特性

封装

封装:指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象的内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问。

使用 class 关键字实现封装

C++ 语言中定义类形式:

class 类名{类的属性方法};

python 语言中定义类形式:

class 类名: (类的属性方法)

类的定义也就是实现一系列变量和方法的封装,用户并不需要知道方法内部如何实现,只需要知道调用哪个方法来实现自己的功能即可

继承

继承定义

python 语法规则中对于缩进格式要求十分的严格,在写代码时候一定要注意缩进格式

python 语言中继承语法:

class 类名(父类名):
\tab (注意缩进格式) 类的内容体

单继承

一个类继承自一个父类

在这里插入图片描述

多继承

一个类继承自多个父类

在这里插入图片描述

当多个父类中存在同名成员时候会怎样?

在这里插入图片描述

在这里注意是,谁先继承谁优先级高,因此优先访问到的是 Phone 类内的 producer 成员变量

pass 关键字

若一个类继承了父类中的成员变量以及成员方法,自己并不需要增加新的一些方法,而一个类又不能只有类的定义一行信息而没有类体存在,对于这种情况我们需要使用关键字 pass

在这里插入图片描述

在这里插入图片描述

继承下的方法重写

子类继承父类中的方法,但是对其内容又不满意,因此可以在自己的类中重新复写这些方法

在这里插入图片描述

但假若我们在子类中虽重写了父类中的方法,但我们在调用时候仍需要调用父类的方法,那要如何操作呢?

调用父类成员有两种方法

父类名.成员变量
父类名.成员方法(self)

在这里插入图片描述

使用 super() 调用父类成员
super().成员变量
super().成员方法

在这里插入图片描述

类型注解

Python 3.5 之后引入了类型注解,其作用就是让你可以明确的声明变量的类型;类型注解仅仅是提供给编辑器进行类型检查的机会,也就是起提示的作用,对 Python 程序的运行不会产生任何影响

变量类型注解

# 基础数据类型注解:

var1:int=10
var2:float=12.14
var3:str="zxcvbb"
var4:bool=True

# 类对象类型注解:
class Student:
    pass
stu: Student = Student()
# 基础容器类型注解:
my_list:list=[1,2,3]
my_tuple:tuple=(4,5,6)
my_set:set={1,2,3}
my_dict:dict={"cccc":666}
my_str:str="cccc"

# 导入相应的包信息

from typing import List, Dict,Tuple,Set

# 容器类型注解:
mu_list: List[int]=[1,2,3]
mu_tuple: Tuple[str,float,bool]=("xxx",13.14,True)
mu_set:Set[int]={1,2,3}
mu_dict:Dict[str,int]={"ccc":12}


alt + 回车 自动搜索当前调用函数相对应的包并帮助我们引入该包内容

同样我们也可以通过 注释方式进行标记类型 # type:类型

函数(方法)类型注解

对形参的类型注解

def 函数方法名(形参名:类型, 形参名:类型,…)
\tab pass

在这里插入图片描述

对返回值进行类型注解

def 函数方法名(形参名:类型, 形参名:类型,…) -> 返回值类型
\tab pass

在这里插入图片描述

Union 联合类型注解

from typing import Union 导入对应的包

注解写法:
Union[类型,类型,…]

# Union 类型注解

from typing import List,Dict,Union

my_list: List[Union[str,int]]=[1, 2, "xxx", "zzz"]

my_dict: Dict[str,Union[str,int]]={"name": "rose", "age":19}

# 函数注解
from typing import Union
def func(data:Union[int,str]) -> Union[int,str]:
    pass

多态

定义

实现一个方法,传入不同的对象会产生不同的结果

在这里插入图片描述

class Animal:     # 父类
    def speak(self):
        pass

class Dog(Animal):
    def speak(self):
        print("汪汪汪")

class Cat(Animal):
    def speak(self):
        print("喵喵喵")

def make_noise(animal:Animal):     # 统一使用的一个接口
    animal.speak()


dog=Dog()
cat=Cat()
make_noise(dog)
make_noise(cat)

在这里插入图片描述

抽象类

抽象类:函数的方法体是 空 – pass , 定义抽象方法,由子类来具体实现该方法体

在这里插入图片描述

抽象类的作用:

用于做顶层设计(设计标准),以便于子类进行具体的实现;是对子类的一种软性约束,要求子类必须复写(实现)父类中的抽象类方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/716713.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

nodejs(express)+TypeScripts环境

初始化项目: npm init -y 安装包: npm i types/express //安装type类型的express如果不加types就是安装js文件,虽然对项目的运行没啥问题但是会没有提示npm i typescriptnpm i types/mysql安装完成后就开始配置了: 在项目的根…

VCL组件DevExpress VCL图表控件中文指南 - 如何实现值标签自定义?

DevExpress VCL拥有230个VCL界面控件、40个自定义设计的VCL应用主题,它能帮助您创建优异的用户体验,提供高影响力的业务解决方案,并利用您现有的VCL技能为未来构建下一代应用程序。 在刚更新的DevExpress VCL v23.1组件库中,包含…

英伟达GeForce Game Ready 536.40 WHQL驱动程序快速获取

6月底,随着英伟达RTX 4060显卡发布,英伟达随即发布了Game Ready 536.40 WHQL显卡驱动,为RTX 4060显卡提供支持。除了RTX 4060 显卡驱动支持外,还有其他方面的优化,驱动人生为大家带来536.40 WHQL驱动支持一览。 NVIDI…

I2S协议

器件连接图: I2S(Inter-IC Sound)是一种数字音频传输协议,用于在集成电路之间传输音频数据。它通常用于连接音频设备,如数字音频处理器、音频编解码器、音频DAC和ADC等。 I2S协议通过三根线进行数据传输:时…

Markdown的基本介绍、书写格式,并写一个示例

Markdown是一种轻量级的标记语言,用于简洁地书写和格式化文本。它可以用于创建各种文档,如网页、博客文章、论坛帖子等。 Markdown的语法相对简单,易于学习和使用。以下是一些常用的Markdown语法和书写格式: 1. 标题&#xff1a…

金山企业版杀毒软件平台“终端安全系统V9”linux客户端不能注册的问题解决方法。

金山企业版杀毒软件平台“终端安全系统V9”,出现部分Linux客户端安装后无法注册到服务器的问题,本文提供了一种问题解决方法。 一、平台版本 平台为金山企业版杀毒软件平台“终端安全系统V9”: 平台端版本为V9.SP2.E1004 客户端安装包&…

软件测试技能,JMeter压力测试教程,通过Jython调用Python脚本(二十三)

一、前言 前面在 BeanShell 里面是通过 java 脚本实现请求的预处理,jmeter里面也可以调用python的脚本,需安装 jython.jar 的插件 Jython 是 Python 的纯 Java 实现,它无缝地结合了 Java 类与 Python,使用户能以 Python 语言的语…

解决打印机已经删除,但是wps打印时还会显示问题

进入桌面后,按下“Win R”组合键打开运行窗口输入“spool”并点击确定之后会进入路径为“C:\Windows\System32\spool”的文件夹中在spool文件夹中找到一个PRINTERS的文件夹,双击打开删除PRINTERS文件夹内的所有内容,不能删除的话需要先停止打…

Apikit 自学日记:Mock 内置函数

Mock内置函数教程 通过编写Javascript脚本设置响应内容,还可以直接使用内置函数设置“请求体触发条件”相关内容,设置的信息等同于在“请求体触发条件”输入框中的设置,如设置Header参数或者请求体参数等,设置完成后,…

每日一练 | 华为认证真题练习Day71

1、在使用FTP协议升级路由器软件时,传输模式应该选用()。 A. 文字模式 B. 字节模式 C. 流字节模式 D. 二进制模式 2、DHCP服务器使用哪种报文确认主机可以使用IP地址? A. DHCP ACK B. DHCP DISCOVER C. DHCP REQUEST D. D…

npm命令在控制台没有输出

$ npm $ npm -v $ npm install package在控制台输出有关npm的所有命令都没有反应&#xff0c;没有报错没有信息&#xff0c;不知道是怎么回事。删掉了nodejs文件夹&#xff08;在C:/Program Files/nodejs和C:/users/<username>/AppData/Roaming/npm&#xff09;&#xff…

无监控,不运维!Prometheus预测与告警详解(一)

文章部分内容来源于公众号——布博士&#xff08;擎创科技资深产品专家&#xff09; 前言&#xff1a; 说到Prometheus&#xff0c;很多人第一印象可能是希腊神话中泰坦火神的形象&#xff0c; 但在我们程序员的眼里&#xff0c;Prometheus 是一个用GO编写的系统监控和警报工具…

WiFi模块IBF165,3路开关量输入,2路开关量输出,流量计脉冲计数

产品特点&#xff1a; ● 3路开关量输入&#xff0c;2路开关量输出 ● DI每一路都可用作计数器或者频率测量 ● DO每一路都可独立输出PWM信号 ● 支持Modbus TCP 通讯协议 ● 内置网页功能&#xff0c;可以通过网页查询电平状态 ● 可以通过网页设定输出状态 ● 宽电…

Windows 中使用 Linux 的 5 种方法详解

概要 作为一名开发者&#xff0c;你可能需要同时运行 Linux 和 Windows。幸运的是&#xff0c;有多种可以两全其美的方法&#xff0c;你不需要为每个操作系统购买不同的电脑。 在这篇文章中&#xff0c;我们将探讨在 Windows 机器上使用 Linux 的几种方法。其中一些是基于浏览…

Spring Cloud Stream消息驱动项目集成

&#x1f4dd; 学技术、更要掌握学习的方法&#xff0c;一起学习&#xff0c;让进步发生 &#x1f469;&#x1f3fb; 作者&#xff1a;一只IT攻城狮 &#xff0c;关注我&#xff0c;不迷路 。 &#x1f490;学习建议&#xff1a;1、养成习惯&#xff0c;学习java的任何一个技术…

Spark(9):RDD的序列化

目录 0. 相关文章链接 1. 闭包检查 2. 序列化方法和属性 3. Kryo 序列化框架 4. 核心点总结 0. 相关文章链接 Spark文章汇总 1. 闭包检查 从计算的角度, 算子以外的代码都是在 Driver 端执行, 算子里面的代码都是在 Executor 端执行。那么在 scala 的函数式编程中&…

C# 泛型List排序的实现

本文主要介绍了C# 泛型List排序的实现&#xff0c;分享给大家&#xff0c;具体如下&#xff1a; 代码 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 5…

Github下载Failed to connect to github.com port 443: Timed out

方法一&#xff1a; 使用ssh下载的方式 方法二 使用github加速网站 https://gitclone.com ,用命令行&#xff1a; git clone https://http://gitclone.com/http://github.com/xxx/yyy 参考链接 github克隆失败提示“443&#xff1a;Timed out”怎么解决&#xff1f; - 知乎

形式化验证,Complete Formal Verification of TriCore2 and Other Processors(五)

目录 一、Article:文献出处&#xff08;方便再次搜索&#xff09; &#xff08;1&#xff09;作者 &#xff08;2&#xff09;文献题目 &#xff08;3&#xff09;文献时间 &#xff08;4&#xff09;引用 二、Data:文献数据&#xff08;总结归纳&#xff0c;方便理解&am…

Linux 学习记录45(C++篇)

Linux 学习记录45(C篇) 本文目录 Linux 学习记录45(C篇)一、纯虚函数和抽象类1. 纯虚函数2. 抽象类 二、C中的异常处理1. 抛出异常2. 处理/捕获异常 三、模板(template)1. 模板函数(1. 模板函数的定义和调用(2. 模板函数需要显性调用的时机 2. 模板类3. 模板函数和模板类实现的…