Python_封装和继承

封装

Python的封装是一种将数据(属性)和行为(方法)捆绑在一起的操作,以实现数据隐藏和抽象。
封装的目的是保护对象内部的数据不被外部直接访问和修改,同时提供接口与外界交互。
  • 私有属性:在Python中,通过在属性名前添加两个下划线(__)来定义私有属性。
  • getter和setter方法:用于获取和设置私有属性的值。
  • 类方法:用于实现类级别的功能。

Python封装示例:

class Person:def __init__(self, name, age):self.__name = name  # 私有属性self.__age = age    # 私有属性# getter方法def get_name(self):return self.__name# setter方法def set_name(self, name):self.__name = name# getter方法def get_age(self):return self.__age# setter方法def set_age(self, age):if age >= 0:self.__age = ageelse:print("年龄不能为负数")
# 创建Person对象
person = Person("张三", 25)
# 访问私有属性(错误示例,会报错)
# print(person.__name)
# 通过getter方法获取私有属性
print(person.get_name())  # 输出:张三
# 通过setter方法设置私有属性
person.set_name("李四")
print(person.get_name())  # 输出:李四
# 尝试设置非法年龄
person.set_age(-1)  # 输出:年龄不能为负数

此例中,__name__age 是私有属性,不能直接从外部访问。通过提供get_nameset_nameget_ageset_age方法来间接访问和修改这些属性。以确保数据的安全性和有效性。

继承

继承允许我们创建一个新的类(称为子类或派生类)来继承另一个类(称为基类或父类)的属性和方法。其目的是实现代码复用和扩展已有类的功能。
  • 单继承:子类继承一个基类。
  • 多继承:子类可以继承多个基类。
  • 方法重写:子类可以重写基类的方法,以提供特定的实现。
  • super()函数:在子类中调用基类的方法。
Python继承示例:
# 基类
class Animal:def __init__(self, name):self.name = namedef speak(self):pass  # 在基类中不实现,留给子类去实现
# 派生类
class Dog(Animal):def speak(self):return "汪汪汪"
# 另一个派生类
class Cat(Animal):def speak(self):return "喵喵喵"
# 创建Dog对象
dog = Dog("旺财")
print(dog.name + "说:" + dog.speak())  # 输出:旺财说:汪汪汪
# 创建Cat对象
cat = Cat("咪咪")
print(cat.name + "说:" + cat.speak())  # 输出:咪咪说:喵喵喵

此例中,Animal 是一个基类,有一个属性 name 和一个方法 speakDogCat 是从 Animal 继承而来的子类,它们都重写了 speak 方法以提供特定的实现。

方法重写和super(),在子类中调用基类的方法,可使用 super() 函数:
class Dog(Animal):def speak(self):return super().speak() + ",汪汪汪"  # 调用基类的speak方法
# 现在,如果基类Animal的speak方法有实现,它将被调用
# 然后Dog的speak方法会在基类方法的基础上添加自己的实现

在修改后的 Dog 类中,speak 方法首先调用了基类 Animalspeak 方法,然后添加了自己的实现。

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

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

相关文章

ES6 数组的扩展(十六)

1. Array.from() 特性:从类数组对象或可迭代对象中创建一个新的数组实例。 用法:将类数组对象或可迭代对象转换为数组。 const likeArray { 0: a, 1: b, length: 2 }; const arr Array.from(likeArray); console.log(arr); // 输出:[a, b…

C#数字医学影像系统(RIS/PACS)源码,Oracle数据库,C/S架构,运行稳定

数字医学影像系统(RIS/PACS)源码,三甲以下的医院都能满足。PACS 系统全套成品源码。 开发技术:C/S架构,C#开发语言,数据库服务器采用Oracle数据库。 医学影像存储与传输系统,融合了医学信息化…

算法-经典递归解决排列组合

文章目录 前言1. 获取字符串的所有字串2. 数组的子集(无重复)3. 数组的子集(有重复)4. 字符大小写全排列5. 全排列(无重复)6. 全排列(有重复) 前言 如何正确的处理递归 所有的递归都分为带路径的递归和不带路径的递归, 我们之前学二叉树的时候基本上都是带路径的递归, 所有的递…

HBuilder x 使用Git管理项目,配合easy-git插件管理项目代码配置git和推送/拉取使用教程

文章目录 目录 文章目录 使用流程 小结 概要安装流程技术细节小结 概要 克隆/拉取项目代码到本地电脑教程 HBuilder x 使用Git管理项目,配合easy-git插件 克隆项目代码到本地教程-CSDN博客 电脑环境已安装好Hbuilder x工具 如果没有安装可以参考以下先安装好Hbui…

MATLAB6:M文件和控制流

文章目录 一、实验目的二、实验内容三、仿真结果四、实践中遇到的问题及解决方法 一、实验目的 1. 熟悉运用MATLAB的控制指令。   2. 理解M脚本文件和函数文件的本质区别。   3. 能够运用所学知识,编制程序解决一般的计算问题。 二、实验内容 1.for循环结构及注…

银发经济发展需要什么支持

随着社会老龄化的加剧,“银发经济”应运而生,成为社会发展的新动向。银发经济指的是针对老年人群体的经济活动,包括健康护理、休闲旅游、教育文化等多方面内容。这一现象不仅体现了社会对老年群体的关注和尊重,同时也为经济发展提…

python selenium4 EdgeDriver动态页面爬取

截止至2024.7.16 chrome浏览器最新版本为126.0.6478.127 但对应的chromeDriver版本都低于此版本,因此,转用Edge浏览器 说明:仅记录自己使用过程中用到的一些代码和感受,看具体情况不定期更新。 selenium官方文档 1、安装selen…

qt 6.7 版本 ,QStackedLayout布局中添两个QWidget,每个QWidget都有一个按钮,点击后分别显示另一个布局

1.代码 在Qt 6.7中,如果你想要将QStackedLayout布局中包含两个QWidget,并且每个QWidget都有一个按钮,点击按钮后显示另一个布局,同时希望将头文件(.h)和源文件(.cpp)分开&#xff0…

Python基础:register buffer

模型保存下来的参数有两种:需要更新的 Parameter ,与是不需要更新的 buffer 。 在模型中,利用backward反向传播,可以通讨requires_grad来得到 buffer 和 parameter 的梯度信息,但是利用 optimizer 进行更新的是 parame…

Apache httpd-vhosts.conf 配置详解(附Demo)

目录 前言1. 基本配置2. http和https3. 重定向和代理配置4. 实战前言 Nginx的相关配置推荐阅读:Nginx将https重定向为http进行访问的配置(附Demo) 1. 基本配置 httpd-vhosts.conf 是 Apache HTTP Server 配置虚拟主机(Virtual Hosts)的文件 虚拟主机允许在一台服务器上…

HarmonyOS NEXT零基础入门到实战-第一部分

构建节页面思路: 1、排版 (分析布局) 2、内容(基础组件) 3、美化(属性方法) 设计资源-svg图标 界面中展示图标 ->可以使用svg图标(任意放大缩小不失真,可以改颜色) 使用方式&a…

重磅活动推荐:2024 CLK 大会启动中,承办单位开放报名

中国 Linux 内核开发者大会(简称“CLK 大会”)是中国 Linux 内核领域最具影响力的峰会之一,由清华大学、英特尔、富士通南大、IBM、阿里云、华为、腾讯等企业支持主办。大会秉承“自由、协作、创新”理念,以推动和普及开源技术为使…

java中Hashcode的作用【详解版】

一 HashCode作用 1.1 HashCode作用 hashCode是object类的一个方法,用于哈希表结构,主要是用来获取哈希值,用于确定对象在哈希表中的位置,如果两个对象的hashcode相同,那么他们可能被放在哈希表同一个位置(这取决于哈…

【每天值得看】文章获得《每天值得看》人工智能板块推荐第三名!为自己点个赞!!!

[2024-07-19]|CSDN每天值得看|人工智能 ① 【机器学习】Grid Search: 一种系统性的超参数优化方法(鑫宝Code:[博客] [成就]) [质量分:97;难度等级:未知;新鲜技术:99] 摘…

第2部分:物联网模式在行动

第2部分:物联网模式在行动 上一部分中详细介绍的模式可以混合和匹配,以实现物联网用例。本部分提供了这些模式的有效性证明,以满足不同领域的独特需求并实施用例,包括消费品和家庭自动化、零售、运输、制造和农业。 本部分包括以…

辅助类BigDecima/BigInteger

** 大数据的运算** 编号1方法解释1add2subtract-3multiply*4divide/

如何发一篇顶会论文? 涉及3D高斯,slam,自动驾驶,三维点云等等

SLAM&3DGS 1)SLAM/3DGS/三维点云/医疗图像/扩散模型/结构光/Transformer/CNN/Mamba/位姿估计 顶会论文指导 2)基于环境信息的定位,重建与场景理解 3)轻量级高保真Gaussian Splatting 4)基于大模型与GS的 6D pose e…

无重复字符的最长子串(leetcode)

题目来源:https://leetcode.cn/problems/longest-substring-without-repeating-characters/description/ 题意 如题,给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度 思路 考点:哈希表滑动窗口 如果我们用两重循…

AutoMQ 生态集成 Redpanda Console

通过 Kafka Web UI 更加便利地管理 Kafka/AutoMQ 集群 随着大数据技术的飞速发展,Kafka 作为一种高吞吐量、低延迟的分布式消息系统,已经成为企业实时数据处理的核心组件。然而,Kafka 集群的管理和监控却并非易事。传统的命令行工具和脚本虽…

C++从入门到起飞之——this指针 全方位剖析!

个人主页:秋风起,再归来~ C从入门到起飞 个人格言:悟已往之不谏,知来者犹可追 克心守己,律己则安! 目录 1、this指针 2、C和C语⾔实现Stack对⽐ C实现Stack代码 C实现Stack代…