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 运行环境不同…...

微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...

Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...

CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧
上周三,HubSpot宣布已构建与ChatGPT的深度集成,这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋,但同时也存在一些关于数据安全的担忧。 许多网络声音声称,这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...

【若依】框架项目部署笔记
参考【SpringBoot】【Vue】项目部署_no main manifest attribute, in springboot-0.0.1-sn-CSDN博客 多一个redis安装 准备工作: 压缩包下载:http://download.redis.io/releases 1. 上传压缩包,并进入压缩包所在目录,解压到目标…...

小智AI+MCP
什么是小智AI和MCP 如果还不清楚的先看往期文章 手搓小智AI聊天机器人 MCP 深度解析:AI 的USB接口 如何使用小智MCP 1.刷支持mcp的小智固件 2.下载官方MCP的示例代码 Github:https://github.com/78/mcp-calculator 安这个步骤执行 其中MCP_ENDPOI…...