python核心编程(二)
python面向对象
- 一、基本理论
- 二、 面向对象在python中实践
- 2.1 如何去定义类
- 2.2 通过类创建对象
- 2.3 属性相关
- 2.4 方法相关
- 三、python对象的生命周期,以及周期方法
- 3.1 概念
- 3.2 监听对象的生命周期
- 四、面向对象的三大特性
- 4.1 封装
- 4.2 继承
- 4.2.1 概念
- 4.2.1 目的
- 4.2.2 分类
- 4.2.3 type和object区分
- 4.2.4 继承下的影响
- 4.3 多态
一、基本理论
1.什么是对象?万物皆为对象,对象是具体的事物:1. 拥有属性2. 拥有行为3. 把很多零散的东西,封装为一个整体2. python中体现:python是一门特别彻底的面向对象编程(OOP)的语言3. 面向过程&面向对象都是解决问题的思路面向过程:在解决问题的时候,关注的是解决问题的每个过程(步骤)面向对象:在解决问题的时候,关注的是解决问题所需要的对象对比:1. 面向对象和面向过程都是解决问题的一种方式(思想) 面向对象本身是对面向过程的封装2. 面向过程编程最重要的是按照步骤划分,把一个任务,分解成具体的每一个步骤3. 面向对象编程最重要的是划分不同的对象,之后去确定对象的属性和行为4. 如何从面向过程编程思想,过渡到面向对象编程?4.1 先列举出一个任务的具体实现的步骤4.2 试图分离这些实现步骤的功能代码块4.3 将这些功能代码块,划分到某一个对象中4.4 根据整个对象以及对应的行为,抽象出对应的类4. 类4.1 类:某个具体对象特征的抽象4.2 类的作用:根据抽象的类,生产具体的对象4.3 类的组成:名称属性方法注意:以上属性和方法,都是抽象的概念在产生对象之后,对象才用于具体的属性值,和方法实现对象和类的关系:对象可以抽象为类,类可以实例化对象
二、 面向对象在python中实践
2.1 如何去定义类
class 类名: pass 里面的pass表示一个空语句,为了去保证整个结构的一个完整
2.2 通过类创建对象
变量=类名() 进行实例化
2.3 属性相关
1. 属性相关1.1 属性和变量的区别及判定依据?区别:1. 概念:变量是”可以改变的量值“属性是”属于某个对象的特性“2. 访问权限:变量:根据不同的位置,存在不同的访问权限属性:只能通过对象来进行访问判定依据:是否存在宿主2. 对象属性2.1 怎样让一个对象拥有一些属性?(增)1. 直接通过对象,动态添加 对象.属性 = 值2. 通过类的初始化方法(构造方法) __init__方法2.2 怎样访问或者修改一个对象的属性?(查,改)通过对象.属性来进行查询,如果之前没有就是查询,有的话就是修改2.3 怎样删除一个对象的属性?(删)del 对象.属性补充:查看对象所有属性 对象.__dict__3. 类属性3.1 怎样让一个类拥有属性?(增)方式1:类名.类属性 = 值方式2:在类里面直接写上变量名3.2 怎样让一个类拥有属性?(查)方式1:通过类访问,类名.类属性方式2:通过对象访问,对象.类属性注意:通过对象访问到类属性,是和python对象的属性查找机制有关,优先到对象自身去查找属性,找到则结束;如果没有找到,则根据_class_找到对象对应的类,到这个类里面去找。3.3 怎样让一个类拥有属性?(改)方式1:类名.属性 = 值方式2:对象.__class__.属性 = 值3.4 怎样让一个类拥有属性?(删)通过类名删除,del 类名.属性,但是不能通过对象删除,del 语句只删除直系属性。
2.4 方法相关
1. 方法的概念:描述一个目标的行为动作。2. 方法的划分:2.1 实例方法 默认第一个参数需要接收到一个实例2.2 类方法 默认第一个参数需要接收到一个类2.3 静态方法 第一个参数啥也不默认接收3. 实例方法3.1 标准调用使用实例调用实例方法, 不用手动传,解释器会自动把调用对象本身传递过去。3.2 其他调用1. 使用类调用2. 间接调用4. 类方法4.1 标准调用可以通过类或者用例来调用4.2 其他调用利用子类进行调用5. 静态方法既可以使用类调用或者用例调用补充:实例属性只能通过实例,类属性的话,既可以通过实例或者类进行访问。
三、python对象的生命周期,以及周期方法
3.1 概念
生命周期:指一个对象,从诞生到消亡的过程当一个对象被创建时,会在内存中分配相应的内存空间进行存储当这个对象不再使用,为了节约内存,就会把这对象释放
3.2 监听对象的生命周期
1. __new__方法当我们创建一个对象时,用于给这个对象分配内存的方法,通过拦截这个方法,可以修改对象的创建过程,比如:单例设计模式2. __init__方法对象创建完成之后,会调用init方法3. __del__方法
四、面向对象的三大特性
4.1 封装
- 概念
将一些属性和相关方法封装都一个对象中,对外部隐藏内部具体实现细节。 - 好处
- 使用起来更加方便
- 保证数据的安全
- 有利于代码维护
4.2 继承
4.2.1 概念
继承:一个类“拥有”另外一个类的“资源”的方式之一。
- 拥有:并不是资源的复制,变为双份资源,而是资源的“使用权”。
- 资源:指“非私有的”属性和方法。
4.2.1 目的
继承的目的就是为了方便资源重用。
4.2.2 分类
- 单继承:仅仅继承了一个父类。
- 多继承:继承了多个父类。
4.2.3 type和object区分

4.2.4 继承下的影响
1. 资源的继承明确:在python中,继承是指资源的使用权,所以,测试某个资源能否被继承,其实就是测试在子类当中,能不呢个访问父类中的这个资源。结论:除了私有的属性和私有的方法,其他基本上都能继承。2. 继承的下的影响2.1 继承几种形态单继承链无重叠的多继承链有重叠的多继承链2.2 几种形态应该遵循的标准规则2.2.1 单继承遵循“从上到下的原则”,自己身上没有这个资源,就到父类里面去找,父类再没有,再往上走。2.2.2 无重叠的多继承按照继承的先后次序,优先调用左侧继承链上的属性或者方法.2.2.3 有重叠的多继承遵循“从上到下的原则”。2.3 资源的覆盖(属性和方法)在MRO的资源检索链当中,优先级比较高的类写了一个和优先级比较低的类一样的一个资源(属性或方法),到时候,再去获取相关资源,就会优先选择优先级比较高的资源,而摒弃优先级比较低的资源,造成“覆盖”的假象
4.3 多态
多态:一个类,所延伸的多种形态。调用时多种形态:在继承的前提下,使用不同的子类,调用父类的同一个方法,产生不同的功能。
相关文章:
python核心编程(二)
python面向对象 一、基本理论二、 面向对象在python中实践2.1 如何去定义类2.2 通过类创建对象2.3 属性相关2.4 方法相关 三、python对象的生命周期,以及周期方法3.1 概念3.2 监听对象的生命周期 四、面向对象的三大特性4.1 封装4.2 继承4.2.1 概念4.2.1 目的4.2.2 分类4.2.3 t…...
【wiki知识库】02.wiki知识库SpringBoot后端的准备
📝个人主页:哈__ 期待您的关注 目录 一、🔥今日目标 二、📂打开SpringBoot项目 2.1 导入所需依赖 2.2修改application.yml配置文件 2.3导入MybatisPlus逆向工程工具 2.4创建一个公用的返回值 2.5创建CopyUtil工具类 2.6创建…...
python tuple(元组)
python list(列表)、创建、访问、内置index、判断in、not in、添加元素、insert、append、extend、列表排序、颠倒顺序、删除元素、remove、pop、clear-CSDN博客 目录 tuple: 元组的主要特点包括: tuple的创建 单个元组需要注…...
opencv调用摄像头保存视频
opencv调用摄像头保存视频 文章目录 opencv调用摄像头保存视频保存视频(采用默认分辨率640 x 480)保存视频(指定分辨率,例1280720) 保存视频(采用默认分辨率640 x 480) import cv2 import time # 定义视频捕捉对象 cap cv2.Vide…...
STM32定时器四大功能之定时器编码接口
1什么是编码器接口? 编码器接口接受编码器的正交信号,根据编码器产生的正交信号脉冲控制CNT的自增和自减,从而指示编码器的旋转方向和旋转速度。 每个高级定时器和通用定时器都有一个编码器接口,同时正交编码器产生的正交信号分…...
全国各城市间驾车耗时和距离矩阵数据集(更新至2022年)
数据简介:城市之间距离越远,耗时越长。经济发达地区的交通状况较好。各城市之间的驾车耗时和距离存在差异。有些城市之间的交通非常便捷,而有些城市之间的交通则较为不便。这表明中国的交通网络发展尚不平衡,需进一步优化。特别是…...
推荐二轮电动车仪表盘蓝牙主芯片方案-HS6621CGC
随着国内二轮电动车的火热开启,电动车的智能化程度越来越高;电动车的智能操控需求也越来越高,现在介绍蓝牙控制面板的一些功能;例如:定位(GNSS),设防,实时上报数据&#…...
『香橙派』基于Orange Pi AIpro打造高效个人云存储解决方案
读完这篇文章里你能收获到 了解Orange Pi AIpro硬件优势,为构建高效云存储基础设施的理想平台。学会使用Orange Pi AIpro硬件平台,搭载Ubuntu Server系统,打造云存储环境。掌握利用Kodbox软件,享受文件管理、多格式预览及编辑的全…...
Sylvester矩阵、子结式、辗转相除法的三者关系(第二部分)
【三者的关系】 首先,辗转相除法可以通过Sylvester矩阵进行,过程如下(以 m 8 、 l 7 m 8、l 7 m8、l7为例子)。 首先调整矩阵中 a a a系数到最后面几行,如下所示: S ( a 8 a 7 a 6 a 5 a 4 a 3 a 2 …...
PyTorch的数据处理
💥今天看一下 PyTorch数据通常的处理方法~ 一般我们会将dataset用来封装自己的数据集,dataloader用于读取数据 Dataset格式说明 💬dataset定义了这个数据集的总长度,以及会返回哪些参数,模板: from tor…...
第14章-蓝牙遥控小车 手把手做蓝牙APP遥控小车 蓝牙串口通讯讲解
本文讲解手机蓝牙如何遥控小车,如何编写串口通信指令 第14章-手机遥控功能 我们要实现蓝牙遥控功能,蓝牙遥控功能要使用:1.单片机的串口、2.蓝牙通信模块 所以我们先调试好:单片机的串口->蓝牙模块->接到一起联调 14.1-电脑控制小车 完成功能…...
【补充1】字节对齐
文章目录 1.字节对齐的基本概念2.字节对齐规则3.实践出真知(加大难度)4 位域 1.字节对齐的基本概念 (1)现代计算机中内存空间都是按照byte划分的, 从理论上讲似乎对任何类型的变量的访问可以从任何地址开始࿰…...
Java数据库连接(JDBC)
一、引言 在Java应用程序中,经常需要与数据库进行交互以存储、检索和处理数据。Java数据库连接(JDBC)是Java平台中用于执行这一任务的标准API。JDBC允许Java程序连接到关系数据库,并使用SQL语句来执行查询和更新操作。本教程将详…...
记录一次cas单点登录的集成
主要思路:浏览器访问CAS服务器登录,拿到凭证给后端,后端用此凭证到CAS服务器验证登录并拿到用户信息,之后基于该凭证维持用户的登录状态。 主要流程: 1.浏览器访问后端需认证登录地址(不带ticket…...
【吊打面试官系列】Java高并发篇 - 什么是乐观锁和悲观锁?
大家好,我是锋哥。今天分享关于 【什么是乐观锁和悲观锁?】面试题,希望对大家有帮助; 什么是乐观锁和悲观锁? 1、乐观锁: 就像它的名字一样,对于并发间操作产生的线程安全问题持乐观状态, 乐观锁认为竞争…...
机器学习之词袋模型
目录 1 词袋模型基本概念 2 词袋模型的表示方法 2.1 三大方法 1 独热表示法(One-Hot) 2 词频表示法(Term Frequency, TF) 3 词频-逆文档频率表示法(TF-IDF) 2.2 例子 1 词袋模型基本概念 词袋模型&a…...
【C++/STL】vector(常见接口、模拟实现、迭代器失效)
🌈个人主页:秦jh_-CSDN博客🔥 系列专栏: https://blog.csdn.net/qinjh_/category_12575764.html?spm1001.2014.3001.5482 目录 简单使用 常见接口 find insert vector模板 模拟实现 尾插 构造 迭代器失效 使用memcpy拷贝问…...
Spring Boot Web 开发:MyBatis、数据库连接池、环境配置与 Lombok 全面解析
推荐一个AI网站,免费使用豆包AI模型,快去白嫖👉海鲸AI 1.0 MyBatis 概述 MyBatis 是一个优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 可以帮助我们将数据库操作抽象出来,使得我们的代码更加简洁…...
【UE5.1 多线程 异步】“Async Blueprints Extension”插件使用记录
目录 一、异步生成Actor示例 二、异步计算示例 参考视频 首先需要在商城中下载“Async Blueprints Extension”插件 一、异步生成Actor示例 2. 创建一个线程类,这里要指定父类为“LongAsyncTask”、“InfiniteAsyncTask”、“ShortAsyncTask”中的一个 在线程类…...
【已解决】在jupyter里运行torch.cuda.is_available(),显示True,在pycharm中运行却显示false。
文章目录 问题概述1、在Jupyter中GPU运行true2、在pycharm中GPU运行false3、个人解决方案仅供参考 问题概述 在jupyter里运行torch.cuda.is_available(),显示True,在pycharm中运行却显示false。原因在于jupyter 运行环境和pycharm 运行环境不同…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...
