Python——面向对象编程(类和对象)2

目录

私有属性和私有方法

01.应用场景及定义方式

02.伪私有属性和私有方法

 继承

1.1继承的概念、语法和特点

1.继承的语法:

2.专业术语:

3.继承的传递性

1.2方法的重写

1.覆盖父类的方法

2.对父类方法进行扩展

关于super

1.3 父类的私有属性和私有方法

多继承

2.1多继承的使用注意事项


私有属性和私有方法

01.应用场景及定义方式

应用场景:

        1.在实际开发中,对象某些属性或方法可能只希望在对象的内部被使用。而不希望在外部被访问到

        2.私有属性就是对象不希望公开的属性

        3.私有方法就是对象不希望公开的方法

定义方法:

        在定义属性或方法时,在属性名或者方法名前增加两个下划线,定义的就是私有属性或方法。

02.伪私有属性和私有方法

        1.在给属性,方法命名时,实际是对名称做了一些特殊处理,使得外界无法访问到。

        2.处理方式:在名称前加上_类名 => _类名_名称

ps:在日常开发中,不要使用这种方式,访问对象的私有属性或私有方法。

 继承

继承分为单继承和多继承

面向对象的三大特性:

        1.封装根据职责属性方法封装到一个抽象的类中。

        2.继承实现代码的重用,相同的代码不需要重复的编写。

        3.多态不同的对象调用相同的方法,产生不同的执行结果,增加代码的灵活度

 

1.1继承的概念、语法和特点

继承的概念子类拥有父类所有方法和属性。 

1.继承的语法:

        1.子类继承自父类,可以直接享受父类中已经封装好的方法,不需要再次开发。

        2.子类中应该根据职责,封装子类特有的属性和方法

2.专业术语:

        1.Dog类是Animal类的子类,Animal类是Dog类的父类,Dog类从Animal类继承。

        2.Dog类是Animal类的派生类,Animal类是Dog类的基类,Dog类从Animal类派生。

3.继承的传递性

        1.C类从B类继承,B类又从A类继承。

        2.那么C类具有B类和A类的所有属性和方法。

        子类有用父类以及父类的父类中封装的所有属性和方法

1.2方法的重写

1.子类拥有父类的所有方法和属性

2.子类继承自父类,可以直接享受父类中已经封装好的方法,不需要再次开发。

应用场景:当父类的方法实现不能满足于子类需求时,可以对方法进行重写

重写父类方法有两种情况:

        1.覆盖父类的方法。

        2.对父类方法进行扩展。 

1.覆盖父类的方法

如果在开发中,父类的方法实现和子类的方法实现完全不同,就可以使用覆盖的方式在子类中重新编写父类的方法实现

具体的实现方式就相当于在子类中定义了一个和父类同名的方法并且实现。

 重写之后,在运行时,只会调用子类中重写的方法,而不再会调用父类封装的方法

2.对父类方法进行扩展

如果在开发中,子类的方法实现中包含父类的方法实现(父类原本封装的方法实现是子类方法的一部分

就可以使用扩展的方式:

        1.在子类中重写父类的方法。

        2.在学要的位置使用super().父类方法来调用父类方法的执行。

        3.代码其他的位置针对子类的需求,编写子类特有的代码实现

关于super

        1.在python中super是一个特殊的类

        2.super()就是使用super类创建出来的对象。

        3.最常使用的场景就是在重写父类方法时,调用在父类中封装的方法实现

1.在开发时,父类名和super()两种方式不要混用。

2.如果使用当前子类名调用方法,会形成递归调用,出现死循环

1.3 父类的私有属性和私有方法

1.子类对象不能在自己的方法内部、直接访问父类的私有属性私有方法

2.子类对象可以通过父类公有方法间接访问到私有属性或私有方法

        私有属性、方法时对象的隐私,不对外公开,外界以及子类都不能直接访问。

        私有属性、方法通常用于做一些内部的事情。

1.B的对象不能直接访问_num2属性

2.B的对象不能在demo方法内访问_num2属性

3.B的对象可以在demo方法内,调用父类的test方法

4.父类的test方法内部,能够访问_num2属性和_test方法 

多继承

子类可以拥有多个父类,并且具有所有父类的属性和方法

例如:孩子会继承自己父类母类特性

2.1多继承的使用注意事项

提示:开发时,应该尽量避免这种容易产生混淆的情况!——如果父类之间存在同名的属性或者方法,应该尽量避免使用多继承。

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

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

相关文章

一天搞定Echarts可视化!(1)——伪类的学习

在下面的课程当中,伪类是经常被使用到的一项css技术。所以这我们先进行伪类的学习来作为本次Echarts课程的前置知识。 认识“&” 在css中,“&”符号通常用于选择器中,表示选择某个元素的子元素或特定状态下的元素。 伪类 :hover—…

PID与PPID

参考文章:https://blog.csdn.net/oh_coding/article/details/128865229 PID (process ID): 进程PID是当操作系统运行进程时系统自动为其分配的标识符,具有唯一性,且为非零整数。一个PID只会标识一个进程。一旦被发放将会是终生标识…

机械拆装-基于Unity-装配功能的实现

目录 1. 装配场景的相机控制 2. 鼠标拖拽和旋转功能的实现 2.1 鼠标拖拽 2.2 物体旋转 3. 零件与装配位置的对应关系 4. 轴向装配的准备位置 5. 装配顺序的实现 5.1 标签提示 5.2 定义一个变量记录步骤数值 1. 装配场景的相机控制 开始装配功能时,需要将相机调…

在大型项目中,怎样有效地组织和管理 SCSS 文件结构以提高开发效率?

在大型项目中,组织和管理 SCSS 文件结构是非常重要的,可以提高开发效率和代码的可维护性。下面是一些有效的方法: 使用模块化和层次化的文件结构:将 SCSS 文件按照模块进行组织,每个模块包含相关的样式规则。可以使用文…

vector与list的简单介绍

1. 标准库中的vector类的介绍: vector是表示大小可以变化的数组的序列容器。 就像数组一样,vector对其元素使用连续的存储位置,这意味着也可以使用指向其元素的常规指针上的偏移量来访问其元素,并且与数组中的元素一样高效。但与数…

1975react社区问答管理系统开发mysql数据库web结构node.js编程计算机网页源码

一、源码特点 react 社区问答管理系统是一套完善的完整信息管理类型系统,结合react.js框架和node.js后端完成本系统,对理解react node编程开发语言有帮助系统采用node框架(前后端分离)),系统具有完整的源…

【代码随想录训练营】【Day 63】【单调栈-2】| Leetcode 42, 84

【代码随想录训练营】【Day 63】【单调栈-2】| Leetcode 42, 84 需强化知识点 单调栈强化 题目 42. 接雨水 注意 python 数组反序用法 result [::-1] class Solution:def trap(self, height: List[int]) -> int:# n len(height)# leftMax, rightMax [0] * n, [0] * …

golang 垃圾回收

gc不回收什么 GC 不负责回收栈中的内存栈是一块专用内存,专门为了函数执行而准备的,存储着函数中的局部变量以及调用栈栈中的数据可以通过简单的编译器指令自动清理,也就不需要通过 GC 来回收了 垃圾回收算法 主流的两类垃圾回收算法有两种&a…

Spring Boot中的安全漏洞防护

Spring Boot中的安全漏洞防护 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨如何在Spring Boot应用中有效防护安全漏洞。随着软件应用程序的复杂…

6种ETL计算引擎介绍

目录 一、ETL计算引擎定义 二、ETL计算引擎的功能和特性 三、6种ETL计算引擎 1、MapReduce 2、Tez 3、Spark 4、Flink 5、ClickHouse 6、Doris 一、ETL计算引擎定义 ETL(Extract, Transform, Load)计算引擎是用于执行ETL过程中数据转换阶段的关键组件之一…

mac如何压缩视频大小不改变画质,mac怎么压缩视频软件

在数字时代,视频已成为信息传递和娱乐消遣的重要媒介。然而,视频带来的愉悦体验背后,是日益增长的存储和分享压力。大视频文件不仅占用大量存储空间,上传和下载也变得异常缓慢。那么,如何才能有效压缩视频,…

ERROR: No matching distribution found for numpy

1.原因: 出现这两行英文是因为原先输入pip install numpy的方式不安全,不被信任所以无法下载。 2.解决方法: 改成以下命令执行: pip install numpy -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun…

2025年中国国际新能源汽车技术零部件及服务展览会

中国国际新能源汽车技术零部件及服务展览会,从设计到制造、从使用到服务,精准“链”接新能源汽车全产业链的技术供应商和汽车制造商,专业面向新能源造车供应链的行业盛会。2024展会回顾:在展会的3天里,有62家车企核心供…

共享拼购:创新商业模式引领小用户基数下的销售奇迹“

在瞬息万变的商业蓝海中,一个新颖且深具潜力的策略正悄然改变着游戏规则,它巧妙地避开了传统路径的束缚,以微妙却深远的调整,开辟出了一条通往成功的独特航道。我的一位合作伙伴,正是这一策略的实践者,他在…

数据库设计(实战项目)-1个手机号多用户身份

一. 背景: 该需求是一个互联网医院的预约单场景,护士在小程序上申请患者查房预约单,医生在小程序上对预约单进行接单,护士开始查房后填写查房小结,客户需要对用户信息进行授权,医生查房后进行签字&#xff…

数字媒体技术基础之:DNG 文件

DNG(Digital Negative)文件是一种用于存储原始图像数据的文件格式,由 Adobe Systems 于2004年开发并推广。DNG 是一种开放的、非专利的原始图像格式,旨在为不同相机制造商提供一个统一的存储格式。DNG 文件保存了原始的、未处理的…

springboot+vue下载文件一篇就够了

前台代码 export function downLoad(id) {var url = baseURL + `/api/admin/system/promotion/downLoad/${id}`axios({method: get,url: url,responseType: blob,headers: { Authori-Zation: getToken() }}).then(async (res) => {// 从 Content-Disposition 头部解析文件名…

C++时区转换

#include <iostream> #include "cctz/civil_time.h" #include "cctz/time_zone.h"// 时区转换库 // https://github.com/google/cctzint test() {for (cctz::civil_day d(2016, 2, 1); d < cctz::civil_month(2016, 3); d) {std::cout << &…

【设计模式】设计模式学习线路与总结

文章目录 一. 设计原则与思想二. 设计模式与范式三. 设计模式进阶四. 项目实战 设计模式主要是为了改善代码质量&#xff0c;对代码的重用、解耦以及重构给了最佳实践&#xff0c;如下图是我们在掌握设计模式过程中需要掌握和思考的内容概览。 一. 设计原则与思想 面向对象编…

ELK企业内部日志分析系统(1)

ELKKafkaFilebeat企业内部日志分析系统(1) Elasticsearch集群部署 1.部署环境 IP地址主机名配置系统版本192.168.222.129es12核4GRockyLinux192.168.222.130es22核3GRockyLinux192.168.222.131es32核3GRockyLinux 2.配置主机名解析和主机名 #关闭防火墙与selinux #更改主机…