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

详解Python面向对象编程(一)

类和对象

面向过程——怎么做?
(1)把完成某一需求的所有步骤、从头到尾,逐步实现
(2)根据开发需求,将某些功能独立的代码块封装成一个又一个的函数
(3)最后完成的代码,就是顺序地调用不同的函数
面向对象——谁来做?
(1)在完成某一需求之前,首先确定职责——要做的事情(方法)
(2)根据职责确定不同的对象,在各个对象内封装不同的方法(赋予每个对象不一样的能力,从而承担不一样的职责)
(3)最后完成代码,就是顺序地让不同的对象调用不同的方法
总结:相比较函数封装,对象是更大的封装,不仅将功能独立的代码块封装成一个方法,更将多个方法封装到一个对象中
0-1、类(一张飞机的设计图纸)
是对具有相同特征和行为的一类事物的统称,是抽象的,不能直接使用的;可以看作一个模板,是负责创建对象的
特征:属性
行为:方法
0-2、对象(根据设计图纸,制造的一辆真实的飞机)
是由类创建出来的一个具体存在,是可以直接使用的;
由哪一个类创建出来的对象,就具有哪一个类的属性和方法
0-3、类和对象的关系
程序开发中,先有类,再有对象
类只有一个,而对象可以有多个;
类中定义了什么属性和方法,对象中就有什么属性和方法;
不同的对象之间属性的具体值(形参)可以是各不相同的(比如由同一张图纸创建出来的三辆飞机颜色可能各不相同)
0-4、类的设计
先确定需要哪些类;一个类需要包含以下三个元素:
(1)类名:这类事物的名字
大驼峰命名法:每一个单词的首字母大写,单词与单词之间无下划线
(2)属性:这类事物具有什么样的特征(常用名词命名)
对象具有的特征(名词),通常可以定义为属性
(3)方法:这类事物具有什么样的行为(常用动词命名)
对象具有的动作(动词),通常可以定义为方法
例子:
在这里插入图片描述

面向对象的基础语法

1-1、 dir()内置函数
在python中,变量、数据和函数都是对象,调到用dir()函数可以查看对象内的所有属性和方法
如:dir(demo) 会返回demo这个类的所有属性和方法
其中:方法名 格式的方法是python内置的方法/属性
在这里插入图片描述
1-2、定义简单的类*
在一个类中封装多个方法,这样通过这个类创建的对象就可以直接调用这些方法
(1)定义只包含方法的类

class 类名:def 方法名一(self,参数列表)passdef 方法名二(self, 参数列表)pass

(2)创建对象

对象变量 = 类名()

(3)第一个面向对象的程序
例子:小猫爱喝水,小猫爱吃鱼
分析:定义一个猫类;定义两个方法(eat、drink);按照需求,不需要定义属性

class Cat:def eat(self):print("小猫爱吃鱼")def drink(self):print("小猫爱喝水")
# 创建猫对象(等号右边负责创建对象,等号左边负责对这个对象进行引用)
tom = Cat()
# 调用猫方法
tom.eat()
tom.drink()
# 返回tom对象是由哪一个类创建的以及这个对象在内存中的地址
print(tom)
# 返回tom对象的地址(16进制)
addr = id(tom)
# 转换为10进制
print("%d" % addr)
# 转化为16进制
print("%x" % addr)

在这里插入图片描述
(4)案例改造-给对象增加属性
方法:在类外部代码上直接通过 :对象名.新增属性名 = 属性值
在这里插入图片描述这种方法简单,但不推荐使用,因为对象的属性和方法应当封装在类的内部,而不应该在类的外部来添加
在这里插入图片描述
并且lazy_cat的并没有增加属性name,说明各个对象之间是相互独立的,对一个对象进行增加属性的操作并不会影响其他的对象。

1-3、self是什么
——在类封装的内部,self就表示当前调用方法/属性的对象自己;
self就是创建的对象本身,哪一个对象调用这个方法,self就是哪一个对象的引用
在这里插入图片描述
1-4、 在类的外部给对象增加属性的问题
在这里插入图片描述
会出现找不对该属性的问题,因此对象需要包含哪些属性,应该封装在类的内部!

初始化方法

2-1 、什么是初始化方法
当使用类名创建对象时,会自动执行以下操作:
(1)创建对象——为对象在内存中分配空间
(2)初始化方法(init)——为对象的属性设置初始值
init:内置的方法,专门用来定义一个类具有哪些属性的方法
在这里插入图片描述
2-2 、在初始化方法内部定义属性
(1)在__init__方法内部使用 self.属性名 = 属性的初始值 就可以定义属性
(2)定义属性之后,使用该类创建的对象,都会拥有该属性
在这里插入图片描述
2-3 、__str__方法
在用print输出对象变量时,能够打印自定义的内容,该方法必须返回一个字符串:
在这里插入图片描述
2- 4、 案例
在这里插入图片描述
总结:在对象的方法内部,是可以直接访问对象的属性的;
同一个类创建的各个对象之间是互不干扰的;

相关文章:

详解Python面向对象编程(一)

类和对象 面向过程——怎么做? (1)把完成某一需求的所有步骤、从头到尾,逐步实现 (2)根据开发需求,将某些功能独立的代码块封装成一个又一个的函数 (3)最后完成的代码&a…...

一文带你完整了解Go语言IO基础库

作者 | 百度小程序团队 导读 introduction 对于刚接触Golang学习的同学,估计比较难掌握的知识点之一就是文件IO处理,光在基础库里会发现 golang除了io包提供文件处理外,os包,http包,embed包都有提供类似的处理&#xf…...

Java基于微信小程序的校园请假系统

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&#…...

Expert Prompting-引导LLM成为杰出专家

ExpertPrompting: Instructing Large Language Models to be Distinguished Experts 如果适当设计提示,对齐的大型语言模型(LLM)的回答质量可以显著提高。在本文中,我们提出了ExpertPrompting,以激发LLM作为杰出专家回…...

Element-Plus下拉菜单边框去除教程

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…...

免费redis可视化工具windows/mac都可以使用,开源免费

官方地址:RedisInsight | The Best Redis GUI github开源地址:GitHub - RedisInsight/RedisDesktopManager Redis Desktop Manager – Redis可视化管理工具、redis图形化管理工具、redis可视化客户端、redis集群管理工具。 官方下载方式 滚动到页面底…...

PHPCMS v9城市分站插件

PHPCMS自带的有多站点功能,但是用过的朋友都知道,自带的多站点功能有很多的不方便之处,例如站点栏目没法公用,每个站点都需要创建模型、每个站点都需要单独添加内容,还有站点必须静态化。如果你内容很多这些功能当然无…...

学习几个地图组件(基于react)

去年开发时用的公司封装的地图组件,挺方便的,但是拓展性不强,所以看看有哪些优秀的开源地图组件吧 1、React Leaflet 介绍:开源的JavaScript库,用于在web上制作交互式地图,允许你使用React组件的方式在应…...

【测试开发学习历程】计算机编程语言

前言: 学习完数据库,我们便要进入到编程语言的内容当中了。 这里先对编程语言写出大致的分类, 在这之后,我们会以Python为重点, 开始测试开发为重点的编程语言学习。 目录 1 计算机编程语言的发展 2 语言的分类…...

动态内存管理-传值调用错题解析

首先我们来看这个错误代码 首先我们看代码逻辑,首先main函数调用test,test接收的是void类型,设置一个指针变量,指向null,传递给get函数,也就是传递一个空指针给getmemory函数,这个函数接收了&a…...

Java特性之设计模式【装饰器模式】

一、装饰器模式 概述 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装 装饰器模式通过将对象包装在装饰器类中,以…...

Leetcode算法题笔记(2)

目录 图论51. 岛屿数量解法一 52. 腐烂的橘子解法一 53. 课程表解法一 54. 实现 Trie (前缀树)解法一 回溯55. 全排列解法一 56. 子集解法一解法二 57. 电话号码的字母组合解法一 58. 组合总和解法一解法二 59. 括号生成解法一解法二 60. 单词搜索解法一 61. 分割回文串解法一 …...

二手车交易网站|基于JSP技术+ Mysql+Java+ B/S结构的二手车交易网站设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java,ssm,springboot的平台设计与实现项目系统开发资源(可…...

lora-scripts 训练IP形象

CodeWithGPU | 能复现才是好算法CodeWithGPU | GitHub AI算法复现社区,能复现才是好算法https://www.codewithgpu.com/i/Akegarasu/lora-scripts/lora-trainstable-diffusion打造自己的lora模型(使用lora-scripts)-CSDN博客文章浏览阅读1.1k次…...

Acwing 503. 借教室

Problem: 503. 借教室 文章目录 思路解题方法复杂度Code 思路 这是一个二分查找问题。我们需要找到最大的借教室数量,使得每个教室的借用时间不超过其可用时间。我们可以通过二分查找来找到这个最大的借教室数量。 解题方法 我们首先对所有的借教室请求按照结束时间…...

吴恩达深度学习笔记:浅层神经网络(Shallow neural networks)3.1-3.5

目录 第一门课:神经网络和深度学习 (Neural Networks and Deep Learning)第三周:浅层神经网络(Shallow neural networks)3.1 神经网络概述(Neural Network Overview)3.2 神经网络的表示(Neural Network Representation…...

Linux设备驱动开发 - 三色LED呼吸灯分析

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 展锐UIS7885呼吸灯介绍呼吸灯调试方法亮蓝灯亮红灯亮绿灯展锐UIS7885呼吸灯DTS配置ump9620 PMIC驱动ump9620中的LED呼吸灯驱动LED的tr…...

开发者的瑞士军刀:DevToys

DevToys: 一站式开发者工具箱,打造高效创意编程体验,让代码生活更加得心应手!—— 精选真开源,释放新价值。 概览 不知道大家是否在windows系统中使用过PowerToys?这是微软研发的一项免费实用的系统工具套…...

【vue3.0】实现导出的PDF文件内容是红头文件格式

效果图: 编写文件里面的主要内容 <main><div id"report-box"><p>线索描述</p><p class"label"><span>线索发现时间:</span> <span>{{ detailInfoVal?.problem.createdDate }}</span></p><…...

【CSP试题回顾】202012-2-期末预测之最佳阈值(优化)

CSP-202012-2-期末预测之最佳阈值 关键点 1.map的遍历方式 map<int, int>occ0Num, occ1Num; for (auto it thetaSet.begin(); it ! thetaSet.end(); it) {num num occ0Num[*it] - occ1Num[*it];auto nextIt next(it); // 获取下一个迭代器if (num > maxNum &a…...

AFE模拟器设计实战:基于ADI系列芯片的ISOSPI菊花链通信仿真

1. ISOSPI菊花链通信的基础原理 在汽车和储能BMS系统中&#xff0c;电池管理芯片(AFE)之间的可靠通信至关重要。ADI公司的ADBMS系列和LTC系列芯片广泛采用ISOSPI(隔离SPI)菊花链拓扑结构&#xff0c;这种设计既能保证通信速率&#xff0c;又能实现高压隔离。我刚开始接触这个技…...

Ostrakon-VL终端惊艳效果:终端界面响应速度实测对比

Ostrakon-VL终端惊艳效果&#xff1a;终端界面响应速度实测对比 1. 像素特工终端效果展示 1.1 视觉设计亮点 Ostrakon-VL终端采用了独特的8-bit像素艺术风格&#xff0c;将传统零售场景中的图像识别任务转化为充满游戏感的"数据扫描任务"。这种设计不仅提升了用户…...

intv_ai_mk11实际作品:10组真实业务提示词生成结果(含政务/教育/金融)

intv_ai_mk11实际作品&#xff1a;10组真实业务提示词生成结果&#xff08;含政务/教育/金融&#xff09; 1. 模型能力概览 intv_ai_mk11是基于Llama架构的中等规模文本生成模型&#xff0c;特别适合处理通用问答、文本改写、解释说明等任务。通过本地部署的Web界面&#xff…...

SEO关键词推广与视频内容创作有什么关系

SEO关键词推广与视频内容创作&#xff1a;一场紧密交织的战斗 在当今的数字化时代&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;和视频内容创作已经成为每个企业和个人在网络世界中取得成功的重要途径。SEO关键词推广与视频内容创作究竟有什么关系呢&#xff1f;本文将…...

如何快速掌握gdrivedl:面向新手的Google Drive下载终极指南

如何快速掌握gdrivedl&#xff1a;面向新手的Google Drive下载终极指南 【免费下载链接】gdrivedl Google Drive Download Python Script 项目地址: https://gitcode.com/gh_mirrors/gd/gdrivedl 你是否经常需要从Google Drive下载共享文件&#xff0c;但总是遇到下载速…...

SEO 推广与传统广告推广有什么区别

SEO 推广与传统广告推广有什么区别 在当今的数字化时代&#xff0c;企业如何有效地推广自己的产品和服务成为了一个亟待解决的问题。两种常见的推广方式——SEO 推广与传统广告推广——各有优劣&#xff0c;企业需要根据自身的需求和市场环境进行选择。本文将详细探讨SEO推广和…...

Qwen2.5-14B-Instruct深度微调实录:像素剧本圣殿开源剧本创作指南

Qwen2.5-14B-Instruct深度微调实录&#xff1a;像素剧本圣殿开源剧本创作指南 1. 项目概览 像素剧本圣殿&#xff08;Pixel Script Temple&#xff09;是一款基于Qwen2.5-14B-Instruct大模型深度微调的专业剧本创作工具。这个开源项目将前沿AI技术与复古像素美学相结合&#…...

快速上手ms-swift:图形界面操作大模型全流程,保姆级指导

快速上手ms-swift&#xff1a;图形界面操作大模型全流程&#xff0c;保姆级指导 1. 为什么选择ms-swift&#xff1f; 在人工智能领域&#xff0c;大模型的训练和部署一直是个技术门槛较高的工作。传统方式需要处理复杂的命令行参数、环境配置和代码调试&#xff0c;这让很多非…...

基于FireRedASR-AED-L与AIGC技术:自动生成语音错误分析报告

基于FireRedASR-AED-L与AIGC技术&#xff1a;自动生成语音错误分析报告 想象一下这个场景&#xff1a;你的团队刚刚完成了一轮大规模的语音识别系统测试&#xff0c;收集了上千小时的音频数据。接下来&#xff0c;你需要从海量的识别结果中&#xff0c;找出哪些词识别错了&…...

实战指南:如何快速解决WebApi在IIS部署中的HTTP 500.19配置错误

1. 遇到HTTP 500.19错误时先别慌 第一次把WebApi部署到IIS服务器就遇到HTTP 500.19错误&#xff0c;相信很多开发者都会心头一紧。这个错误通常伴随着"配置数据无效"的提示&#xff0c;看起来挺吓人&#xff0c;但实际上解决起来并不复杂。我刚开始接触IIS部署时也踩…...