python笔记之面向对象

目录

一、面向对象(OOP--Object Oriented Programming)

二、面对对象的三大特征

1、封装

2、继承

3、多态

三、函数重载(overload)


一、面向对象(OOP--Object Oriented Programming)

——把解决问题的事物分为多个对象 ,对象具备解决问题过程中的行为

        面向对象编程有两个非常重要的概念:类和对象

        对象是面向对象编程的核心,具有相似特征和行为的事物的集合统称为类(class)。对象是根据类创建的,一个类可以对应多个对象

二、面对对象的三大特征

1、封装

        ——把客观事物抽象并封装成对象(将某些部分隐藏起来,在程序外部看不到,无法调用)

为了安全考虑,往往需要将对象的属性就行私有化,提供对应的访问方式 ,即封装。

封装离不开私有化,私有化是指将某个对象限定在某个自己认定的范围内

私有化的方法:将准备私有化的属性对象前面加双下划线__

如属性name--> __name,方法eat --> __eat

get和set方法:

将属性私有化后,可以提供公开的get和set方法。来合法的访问和修改私有化的属性

python中,如果使用_来修饰属性或者成员、变量。表示该属性不能被其他模块使用!!!

 

2、继承

        ——解决代码复用问题

面向对象中,类与类之间也存在着一种继承关系。

被继承的类:父类、超类(super class)、基类

继承类:子类

当子类继承父类时,该子类会自动的继承父类中能被继承的成员

私有的类成员,无法被子类继承。

python中,若子类存在初始化函数,一定要在有效代码的第一行首先手动调用父类的初始化

在python,可以实现多继承,通过逗号,可以实现多继承。

class 类名称([父类1 [, 父类2……]]):pass

3、多态

——在继承的基础上,父类引用指向子类实例的现象,被称为多态

python天生支持多态,时刻体现着多态

List		# 线性表 总类ArrayList	# 基于数组实现的一个线性表  ArrayList 继承了 ListArrayList  ls = new   ArrayList();		// 创建一个ls对象# 可以使用多态实现
List ls = new  ArrayList();

三、函数重载(overload)

存在多个同名称的函数,函数名称相同,参数的个数或者类型不同,从而在调用时,会自动调用对应方法的这种现象,叫做函数重载。

python是弱数据类型编程语言,所以不存在函数重载!!!

最终,只能保留最后一个同名称函数。

如果一定要实现重载,则可以通过装饰器等手段想办法实现

函数重载(overload)、函数重写(overwrite)、函数覆盖(override)的区别

函数重载(overload):函数名称相同的一批函数,函数的参数和类型不同,从而引起调用时,会调用对应函数的现象。

函数重写(overwrite)|函数覆盖(override):在继承的基础上,如果子类继承了父类的某些或者某一个方法,发现某一个方法难以满足自身使用时,就会重写这个方法。

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

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

相关文章

安居水站:水站经营秘籍:年入30万不是梦。水站创业指南。

在这个快节奏的社会里,初创企业家们总是在寻找一条明路,以在竞争激烈的市场中立足。为了帮助他们更好地实现这一目标,我根据经验决定制定一份水站经营指导手册。这份手册将详细阐述如何从零起步,如何运营,如何进行市场…

制作一个RISC-V的操作系统十二-定时器中断

文章目录 CLINT定时器中断mtimemtimecmp机制总体框架流程时间节拍系统时钟代码 CLINT 产生软件中断和定时器中断 定时器中断 mtime 类似计数器,按照硬件对应的固定频率递增 上电后会自动复位为0,有硬件自动完成 mtimecmp 需要自己设置&#xff0…

Java 多线程加法求和

Java 多线程加法求和 代码 先上代码再上解析: import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger;public class Sum implements …

文件IO总结

标准C库IO函数和Linux系统IO函数对比 标准c库IO函数 标准C库提供了一系列的输入输出&#xff08;IO&#xff09;函数&#xff0c;这些函数主要包括在 <stdio.h> 头文件中。这些函数可以大致分为几类&#xff1a; 文件操作函数&#xff1a; fopen&#xff1a;打开文件fc…

Linux内核之内核通知文件系统创建的路径:fsnotify_create用法实例(五十六)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

【图解计算机网络】从浏览器地址输入到网页显示的整个过程

从浏览器地址输入到网页显示的整个过程 整体流程DHCPhttp协议报文组装DNSTCP协议封装与TCP三次握手IP协议封装与路由表MAC地址与ARP协议交换机路由器 整体流程 从往浏览器输入一个地址到网页的显示&#xff0c;要经过很长的一个流程&#xff0c;中间涉及到计算机网络的许多知识…

*Linux系统的进程和计划任务管理

目录 一、查看进程 1、程序和进程的关系 *2、ps查看静态进程信息 1&#xff09;ps aux 2&#xff09;ps -elf *3、top查看动态进程信息 4、pgrep查看进程信息 5、pstree查看进程树 二、控制进程 1、进程启动方式 2、进程的前后台调度 3、终止进程的运行 三、计划任…

React【Day4】

路由快速上手 1. 什么是前端路由 一个路径 path 对应一个组件 component 当我们在浏览器中访问一个 path 的时候&#xff0c;path 对应的组件会在页面中进行渲染 2. 创建路由开发环境 # 使用CRA创建项目 npm create-react-app react-router-pro# 安装最新的ReactRouter包 …

Git TortoiseGit 安装使用详细教程

前言 Git 是一个免费的开源分布式版本控制系统&#xff0c;是用来保存工程源代码历史状态的命令行工具&#xff0c;旨在处理从小型到非常大型的项目&#xff0c;速度快、效率高。《请查阅Git详细说明》。TortoiseGit 是 Git 的 Windows Shell 界面工具&#xff0c;基于 Tortoi…

探索Java设计模式:责任链模式

深入理解与实践Java设计模式之责任链模式 一、简要介绍 责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;是行为型设计模式的一种&#xff0c;它为请求的发送者和接收者解耦&#xff0c;让多个对象都有机会处理这个请求。这种模式创建了一个包含多个处理对…

第 2 章:FFmpeg简介

2.1 历史 历史 一些相关术语介绍&#xff1a; 容器&#xff08;Container&#xff09;格式&#xff1a;一种文件封装格式&#xff0c;里边主要包含了流&#xff0c;一般会使用一个特定的后缀名标识&#xff0c;例如.mov、.avi、.wav等。流 &#xff08;Stream&#xff09;&am…

政安晨:【Keras机器学习示例演绎】(五)—— 利用视觉变换器进行物体检测

目录 导言 导入和设置 准备数据集 实施多层感知器&#xff08;MLP&#xff09; 实施补丁创建层 显示输入图像的补丁 实施补丁编码层 构建 ViT 模型 运行实验 评估模型 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: TensorFlow与…

第二届 Oceanbase 开发者大会 实录

第二届 Oceanbase 开发者大会 实录 今天很有幸参加了Oceanbase 开发者大会&#xff0c;我是真的我一开始还不知道什么是Oceanbase &#xff0c;直到我开了会才知道。看来真的需要多参加一些这样活动。 会议议程 我们科普一下什么是Oceanbase OceanBase 是阿里巴巴集团推出…

如何进行数据库的迁移与同步——【DBA 从入门到实践】第四期

在日常的数据库运维工作中&#xff0c;我们时常会面临数据库替换、机房搬迁、业务测试以及数据库升级等任务&#xff0c;这些任务都需要对数据进行迁移和同步操作。【DBA 从入门到实践】第4期&#xff0c;将引导大家深入了解数据库迁移的流程&#xff0c;并探讨在迁移过程中可用…

【Java】怎么处理Oracle的Clob类型字段

Oracle 数据库中的 CLOB&#xff08;Character Large Object&#xff09;字段类型用于存储大量文本数据&#xff0c;例如长文本、大型文档或 XML 数据等。 这个类型在 Java 中&#xff0c;可以使用 java.sql.Clob 类型来接收 Oracle 数据库中的 CLOB&#xff08;Character Lar…

AJAX——图书管理案例

1.渲染列表 自己的图书数据&#xff1a;给自己起个外号&#xff0c;并告诉服务器&#xff0c;默认会有三本书&#xff0c;基于这三本书做数据的增删改查。 // 目标1&#xff1a;渲染图书列表 // 1.1 获取数据 // 1.2 渲染数据const creator 哈哈 // 封装-获取并渲染图书列表函…

《QT实用小工具·二十八》基于qt开发的各种曲线

1、概述 源码放在文章末尾 该项目实现了各种曲线的绘制&#xff0c;下面是项目的demo演示&#xff1a; 项目部分代码如下&#xff1a; #include "frmsmoothcurve.h" #include "ui_frmsmoothcurve.h" #include "smoothcurve.h" #include "…

npm安装完执行报错找不到 package.json

参考这位老哥的文章&#xff1a;安装nodejs 这么高赞&#xff0c;结果还报错了。。。。 解决方案&#xff1a; 强制初始化一个 json 文件出来 ( npm init -f ) &#xff0c;然后把它放到c盘根目录去&#xff0c;它默认在 system32下面

cocos creator 3.6 发布web手机端 加载进度条添加

cocos creator 升级到3.x之后加载进度条取消了&#xff0c;测试了多个3.x版本最终以creator 3.6.3版本&#xff0c;构建了简单的进度加载 参考链接&#xff1a; https://forum.cocos.org/t/topic/137113 打包web-mobile后&#xff0c;没有进度条。加载的时候只显示一个黑屏。…

【小程序】IOS wx小程序解压获取源文件

根据自己手机的系统&#xff0c;获取wx小程序的缓存目录 一、微信小程序文件存放路径 安卓&#xff1a; /data/data/com.tencent.mm/MicroMsg/{{user哈希值}}/appbrand/pkg/iOS越狱&#xff1a; /User/Containers/Data/Application/{{系统UUID}}/Library/WechatPrivate/{{user…