当前位置: 首页 > news >正文

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 封装

  1. 概念
    将一些属性和相关方法封装都一个对象中,对外部隐藏内部具体实现细节。
  2. 好处
    • 使用起来更加方便
    • 保证数据的安全
    • 有利于代码维护

4.2 继承

4.2.1 概念

继承:一个类“拥有”另外一个类的“资源”的方式之一。

  1. 拥有:并不是资源的复制,变为双份资源,而是资源的“使用权”。
  2. 资源:指“非私有的”属性和方法。

4.2.1 目的

继承的目的就是为了方便资源重用。

4.2.2 分类

  1. 单继承:仅仅继承了一个父类。
  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划分的, 从理论上讲似乎对任何类型的变量的访问可以从任何地址开始&#xff0…...

Java数据库连接(JDBC)

一、引言 在Java应用程序中,经常需要与数据库进行交互以存储、检索和处理数据。Java数据库连接(JDBC)是Java平台中用于执行这一任务的标准API。JDBC允许Java程序连接到关系数据库,并使用SQL语句来执行查询和更新操作。本教程将详…...

记录一次cas单点登录的集成

主要思路:浏览器访问CAS服务器登录,拿到凭证给后端,后端用此凭证到CAS服务器验证登录并拿到用户信息,之后基于该凭证维持用户的登录状态。 主要流程: 1.浏览器访问后端需认证登录地址(不带ticket&#xf…...

【吊打面试官系列】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 运行环境不同&#xf…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

Java求职者面试指南:计算机基础与源码原理深度解析

Java求职者面试指南&#xff1a;计算机基础与源码原理深度解析 第一轮提问&#xff1a;基础概念问题 1. 请解释什么是进程和线程的区别&#xff1f; 面试官&#xff1a;进程是程序的一次执行过程&#xff0c;是系统进行资源分配和调度的基本单位&#xff1b;而线程是进程中的…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序&#xff08;Program&#xff09; 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存…...