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 多态

	多态:一个类,所延伸的多种形态。
	
	调用时多种形态:在继承的前提下,使用不同的子类,调用父类的同一个方法,产生不同的功能。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

安装依赖报-gyp: No Xcode or CLT version detected!

错误 > node-gyp rebuild No receipt for com.apple.pkg.CLTools_Executables found at /. No receipt for com.apple.pkg.DeveloperToolsCLILeo found at /. No receipt for com.apple.pkg.DeveloperToolsCLI found at /. gyp: No Xcode or CLT version detected! gyp ERR!…

银行软件测试有哪些测试点?一般银行的软件测试工作流程有哪些?

银行测试行业前景广阔,随着金融科技的快速发展和银行业务的不断创新,银行对软件测试的需求也在持续增长。软件测试在确保银行系统软件的稳定性、安全性和可靠性方面起着至关重要的作用,因此,银行测试岗位一直受到广泛的关注和重视…

如何知道huggingface/modelscope的大模型的模型层名字

下载模型后,有个文件叫model.safetensors.index.json,里面有。 你下载的大模型位置在用户名/.cache/huggingface/hub/大模型名差不多这个路径。 或者直接print(parameters.name),但是这样打出来特别多,很难看。差不多这样写&am…

高效掌控速卖通自养号测评:成本、步骤、技巧全方位掌握

在跨境电商的汹涌浪潮中,速卖通犹如一颗璀璨的领航星,引领着无数寻求海外拓展的企业和商家驶向国际市场的广阔海域。从最初的C2C模式起步,速卖通历经蜕变,如今已华丽转身成为B2C跨境电商领域的翘楚,承载着无数中国卖家…

【LeetCode刷题】滑动窗口解决问题:水果成篮、找到字符串中所有字母异位词

【LeetCode刷题】Day 9 题目1:904. 水果成篮思路分析:思路1:暴力枚举哈希表思路2:窗口滑动哈希表 题目2:438. 找到字符串中所有字母异位词思路分析:思路1:暴力枚举哈希表思路2:滑动窗…

2024年【焊工(高级)】报名考试及焊工(高级)操作证考试

题库来源:安全生产模拟考试一点通公众号小程序 焊工(高级)报名考试参考答案及焊工(高级)考试试题解析是安全生产模拟考试一点通题库老师及焊工(高级)操作证已考过的学员汇总,相对有…

短剧平台开发中的常见误区及避坑指南,别再走弯路

1. 误区一:只注重外观,忽视技术基础 在短剧平台开发中,一个常见的误区是过于注重产品的外观设计,而忽视了技术基础的重要性。团队往往会投入大量精力和资源来打造吸引人的UI和炫酷的特效,但忽略了系统架构、性能优化和…

外卖点餐二合一小程序源码系统 既能外卖配送也能到店点餐 附带完整的安装代码包以及搭建教程

系统概述 外卖点餐二合一小程序源码系统是一款专为餐饮行业打造的智能化解决方案。它不仅能够满足消费者线上点餐和外卖配送的需求,还能为餐厅提供高效的管理工具,实现线上线下一体化运营。该系统具有稳定的性能和可靠的安全保障,确保餐饮业…

垃圾回收机制及算法

文章目录 概要对象存活判断引用计数算法可达性分析算法对象是否存活各种引用 垃圾收集算法分代收集理论复制算法标记清除算法标记-整理算法 概要 垃圾收集(Garbage Collection, 下文简称GC),其优缺点如下: 优点&#…

Java+IDEA+SpringBoot药物不良反应ADR智能监测系统源码 ADR智能化监测系统源码

JavaIDEASpringBoot药物不良反应ADR智能监测系统源码 ADR智能化监测系统源码 药物不良反应(Adverse Drug Reaction,ADR)是指在使用合格药品时,在正常的用法和用量下出现的与用药目的无关的有害反应。这些反应往往因药物种类、使用…

韩愈,文起八代之衰的儒学巨匠

💡 如果想阅读最新的文章,或者有技术问题需要交流和沟通,可搜索并关注微信公众号“希望睿智”。 韩愈,字退之,生于唐代宗大历三年(公元768年),卒于唐穆宗长庆四年(公元82…

LangChain 0.2 - 对话式RAG

文章目录 一、项目说明二、设置1、引入依赖2、LangSmith 三、Chains1、添加聊天记录Contextualizing the question聊天记录状态管理 2、合并 四、Agents1、检索工具2、代理建造者3、合并 五、下一步 本文翻译整理自:Conversational RAG https://python.langchain.co…

spring suite gitlab使用手册

一、gitlab介绍 GitLab是一个功能丰富的开源代码管理平台,基于Git进行版本控制,并提供了一系列用于团队协作、项目管理、持续集成/持续部署(CI/CD)等工具。以下是关于GitLab的详细介绍: 基础信息: GitLab…

LiveGBS流媒体平台GB/T28181用户手册-云端录像:查看录像、列表视图、时间轴视图、下载、删除

LiveGBS流媒体平台GB/T28181用户手册-云端录像:查看录像、列表视图、时间轴视图、下载、删除 1、云端录像1.1、查看录像1.1.1、时间轴视图1.1.2、列表视图1.1.3、日期切换1.1.4、删除当天 1.2、录像计划1.2.1、录像计划列表1.2.2、编辑录像计划1.2.3、关联通道1.2.4、删除录像计…

每日练习之——背包问题

完全背包 题目描述 运行代码 #include<bits/stdc.h> #include<iostream> using namespace std; const int N1e33; int n,V; int v[N],w[N],dp[N]; int main(){cin>>n>>V; int t1;while(t--){for(int i1;i<n;i){cin>>v[i]>>w[i];}mems…

极简编程:一行JS代码获取全球各城市当前时间!

之前在一些国际化网站看到过&#xff0c;他们展示了当前北京、纽约和伦敦的时钟&#xff0c;在一次住店的时候&#xff0c;我也看到了类似的3个时钟&#xff0c;甚至更多&#xff0c;有的会展示东京时间。 让我觉得获取一些全球重点城市的当前时间&#xff0c;会是一个很常用的…

OrangePi Kunpeng Pro开发板初体验——家庭小型服务器

引言 在开源硬件的浪潮中&#xff0c;开发板作为创新的基石&#xff0c;正吸引着全球开发者的目光。它们不仅为技术爱好者提供了实验的平台&#xff0c;更为专业开发者带来了实现复杂项目的可能性。本文将深入剖析OrangePi Kunpeng Pro开发板&#xff0c;从开箱到实际应用&…

Bootstrap 3.x 版本基础引入指南

Bootstrap 是一款广受欢迎的前端框架&#xff0c;它简化了网页设计与开发流程&#xff0c;帮助开发者快速创建响应式布局和美观的网页界面。本文将向您介绍如何在项目中引入 Bootstrap 3.x 版本的基本步骤&#xff0c;包括 CSS 和 JavaScript 文件的引用&#xff0c;以及必要的…

PyTorch的数据处理

&#x1f4a5;今天看一下 PyTorch数据通常的处理方法~ 一般我们会将dataset用来封装自己的数据集&#xff0c;dataloader用于读取数据 Dataset格式说明 &#x1f4ac;dataset定义了这个数据集的总长度&#xff0c;以及会返回哪些参数&#xff0c;模板&#xff1a; from tor…

国内信创数据库生态

国内信创数据库生态 国内信创数据库主要包括但不限于以下几种&#xff1a; 数据库类型与厂商&#xff1a; 达梦 &#xff08;武汉达梦&#xff09; 官网 https://www.dameng.com/DM8.html 人大金仓 &#xff08;北京&#xff09; 官网 https://www.kingbase.com.cn/tyxsjk/i…