073、类的三大特征初识

(1)继承

类之间可以通过继承建立父子关系,子类可以继承父类的属性和方法,并可以添加自己的特定属性和方法。如下是一个简单示例:

class Student(Person):def __init__(self, name, age, student_id):super().__init__(name, age)self.student_id = student_iddef study(self, subject):print(f"{self.name} is studying {subject}.")# 创建Student类的对象
student = Student("Charlie", 20, "12345")
student.greet()  # 调用从父类继承的方法
student.study("Math")  # 调用子类特有的方法

(2)、封装

封装也是类的三大特征之一。它允许将数据(属性)和操作(方法)捆绑在一起,同时隐藏对象的内部实现细节。这样可以防止外部直接访问对象的内部数据,只能通过对象提供的接口(方法)来访问和修改数据。如下是一个简单示例:

class Car:def __init__(self, make, model, year):self.make = makeself.model = modelself.year = yearself.__odometer_reading = 0  # 使用双下划线开头表示私有属性def get_odometer_reading(self):return self.__odometer_readingdef update_odometer(self, mileage):if mileage >= self.__odometer_reading:self.__odometer_reading = mileageelse:print("You can't roll back an odometer!")# 创建Car类的对象
my_car = Car("Toyota", "Corolla", 2022)# 尝试直接访问私有属性(会报错)
# print(my_car.__odometer_reading)# 通过公有方法访问和修改私有属性
print(my_car.get_odometer_reading())  # 输出: 0
my_car.update_odometer(100)
print(my_car.get_odometer_reading())  # 输出: 100

在这个示例中,__odometer_reading属性被定义为私有属性,外部无法直接访问,只能通过公有方法get_odometer_reading()update_odometer()来访问和修改属性的值,从而实现了封装。

(3)、多态

多态是类的三大特征的另外一个,它允许不同类的对象对同一个方法做出不同的响应。在多态中,同一个方法名可以在不同的类中有不同的实现,从而提高了代码的灵活性和可扩展性。

class Animal:def speak(self):passclass Dog(Animal):def speak(self):return "Woof!"class Cat(Animal):def speak(self):return "Meow!"# 创建不同类的对象
dog = Dog()
cat = Cat()# 调用相同的方法,但根据对象的类型会有不同的行为
print(dog.speak())  # 输出: Woof!
print(cat.speak())  # 输出: Meow!

在这个示例中,Animal类有一个speak()方法,而Dog类和Cat类分别继承Animal类并重写了speak()方法。当调用speak()方法时,根据对象的具体类型,会执行对应类中的方法实现,实现了多态的特性。

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

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

相关文章

Follow Carl To Grow|【LeetCode】93.复原IP地址,78.子集,90.子集II

【LeetCode】93.复原IP地址 题意:有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 ‘.’ 分隔。 例如:“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址&…

【深度学习】实现基于MNIST数据集的TensorFlow/Keras深度学习案例

基于TensorFlow/Keras的深度学习案例 实现基于MNIST数据集的TensorFlow/Keras深度学习案例0. 什么是深度学习?1. TensorFlow简介2. Keras简介3. 安装TensorFlow前的注意事项4. 安装Anaconda3及搭建TensorFlow环境1) 下载安装Anaconda Navigator2&#xf…

go语言day06 数组 切片

数组 : 定长且元素类型一致,在索引逻辑上连续存储,数组的内存地址是存储的第一个元素的内存地址 几种创建方式: 仅声明 var nums [ 3 ] int 声明并赋值 var nums [ 2 ] string {"武沛齐","alex"} 声明并按下标赋值 var nums [ 3 ] int {0:88,2:1 } 省略…

ffmpeg+nginx+video实现rtsp流转hls流,web页面播放

项目场景: 最近调试海康摄像头需要将rtsp流在html页面播放,因为不想去折腾推拉流,所以我选择ffmpeg转hls流,nginx转发,html直接访问就好了 1.首先要下载nginx和ffmpeg 附上下载地址: nginx nginx news ffmpeg htt…

HttpServletRequest・getContentLeng・getContentType区别

getContentLength(): 获取客户端发送到服务器的HTTP请求主体内容的字节数(长度) 如果请求没有正文内容(如GET),或者请求头中没有包含Content-Length字段,则该方法返回 -1 getContentType()&am…

eclipse中svn从分支合并到主干及冲突解决

1、将分支先commit,然后再update,然后再clean一下,将项目多余的target都清理掉。 2、将branches切换到trunk 3、工程上右键-》Team-》合并(或Merge) 4、默认选项,点击Next 5、有未提交的改动,…

文献阅读:通过双线性建模来破译神经元类型连接的遗传密码

文献介绍 文献题目 Deciphering the genetic code of neuronal type connectivity through bilinear modeling 研究团队 Mu Qiao(美国加州理工学院) 发表时间 2024-06-10 发表期刊 eLife 影响因子 7.7 DOI 10.7554/eLife.91532.3 摘要 了解不同神经元…

打造爆款秘籍:阿里巴巴国际站测评补单优势全攻略

在阿里巴巴国际站,买家复购率和其他销售指标是衡量产品市场潜力和销售成功与否的关键指标。当系统评估出产品具有巨大的市场潜力时,它会相应地增加对产品的流量支持;反之,如果潜力不足,产品的排名将会受到影响&#xf…

Node官网下载各个版本

node官网下载各个版本地址 例如 14.16.0 Index of /download/release/v14.16.0/

使用 Spring Boot 3.x 与图形学技术,添加电子印章防伪特征

使用 Spring Boot 3.x 与图形学技术,添加电子印章防伪特征 在电子办公和无纸化办公日益普及的今天,电子印章的使用越来越广泛。然而,如何确保电子印章的安全性和防伪能力成为了一个亟待解决的问题。本文将通过 Spring Boot 3.x 和图形学技术,深入探讨如何为电子印章添加防…

Redis-实战篇-什么是缓存-添加redis缓存

文章目录 1、什么是缓存2、添加商户缓存3、前端接口4、ShopController.java5、ShopServiceImpl.java6、RedisConstants.java7、查看Redis Desktop Manager 1、什么是缓存 缓存就是数据交换的缓冲区(称为Cache),是存贮数据的临时地方&#xff…

MATLAB--矩阵()

文章目录 前言概念矩阵构造 前言 MATLAB作为数学软件计算软件,对于数学运算的性能十分优越,本文作为MATLAB记录关于在MATLAB中关于矩阵的知识。如有错误,还望指正。 概念 在数学上矩阵的定义:由m*n个aij(i1,2…… ,m;j1,2……,…

C# 实战-三种类型的Timer

在C#中,主要有三种类型的Timer: System.Windows.Forms.Timer System.Timers.Timer System.Threading.Timer 以下是每种Timer的简要说明和示例: 1. System.Windows.Forms.Timer 用于Windows Forms应用程序,适合在UI线程中使用。…

【C++ Primer Plus学习记录】函数的基本知识

要使用C函数,必须完成如下工作: 提供函数定义 提供函数原型 调用函数 1.定义函数 可以将函数分为两类:没有返回值的函数和有返回值的函数。 没有返回值的函数被称为void函数,其通用格式如下: void functionName…

编程语言中的语法符号和标识符

编程语言中的语法符号和标识符 语法符号是编程语言中用于结构化和组织代码的符号,而标识符是用于标识和命名代码中的元素,使其具有唯一性和可识别性。它们在编程语言中发挥不同的作用,但共同构成了编程语言的语法体系和代码的组织方式。 语…

微博数据分析

微博运营数据分析 满足入场运营需要,用数据指导提升 数据端管理中心 微博后台的日常运营数据 大数据实验室-微分析 单挑微博数据分析 知微工具(www.weiboreach.com) 分析内容: 传播情况: 曝光量什么时间有什么…

01数字电子技术基础

第一节课:introduction 导论 决定了这门课的学习方法、学习内容、一个大概的把握、虽不是具体的技术,不是细节,但是这是一节思想 每门课都重要,但侧重点不同。 学习前人的思想和营养,为自己所用。 1.课程性质&#x…

【Text2SQL 论文】MAGIC:为 Text2SQL 任务自动生成 self-correction guideline

论文:MAGIC: Generating Self-Correction Guideline for In-Context Text-to-SQL ⭐⭐⭐ 莱顿大学 & Microsoft, arXiv:2406.12692 一、论文速读 DIN-SQL 模型中使用了一个 self-correction 模块,他把 LLM 直接生成的 SQL 带上一些 guidelines 的 p…

Python 中调用函数

在 Python 中调用函数是一个基本但非常重要的操作。以下是一些示例,展示如何在 Python 中定义和调用函数。 定义和调用简单函数 定义一个函数 def greet(name):"""该函数将打印一个问候语"""print(f"Hello, {name}!")调…

前端:HTML、CSS、JavaScript 代码注释 / 注释与代码规范

一、HTML 行内注释 HTML注释是在HTML代码中添加说明和解释的一种方法&#xff0c;这些注释不会被浏览器渲染或显示在页面上&#xff0c;而是被浏览器忽略。HTML注释对于代码的可读性、可维护性和团队协作非常重要。 1.1、HTML注释的语法 HTML注释的语法是以<!--开始&…