【面向对象编程1】——类和对象——如桃花来
目录索引
- ==面向过程和面向对象的区别:==
面向过程:面向对象:总结:
- ==类和对象:==
定义类:- 语法:
创建对象:实例演示:
- ==魔法方法:==
__init __方法:__ del __方法:
面向过程和面向对象的区别:
面向过程:
需要实现一个功能时候,看中的是开发的步骤和过程,每一个步骤都需要自己亲力亲为,需要自己编写代码。我们可以理解为,我们需要详细的规划每一个步骤。
比如我们清扫一个三层房间,
每一层用扫把怎么扫、
从哪里扫、
先从哪层开始扫。
每一个步骤我们都需要详细考虑
面向对象:
需要实现一个功能的时候,看中的不是开发的步骤和过程,而是关心谁去做。相当于我们不需要考虑具体怎么去做,而是考虑我们用这个对象达成什么目的即可。
还是上面那个例子,
如果我们有三个机器人,
机器人A去打扫第一层,
B去打扫第二层,
C去打扫第三层。
我们不需要考虑具体怎么扫地,
只需要管理哪个机器人去扫就可以了,
这就是面向对象。
总结:
面向对象和面向过程,是两种编程思想。编程思想是指同一个问题,用不同的视角去解决问题。
- 面向过程: 注重过程,实现的细节,亲力亲为。
- 面向对象: 关注的是结果,当然了。面向对象的底层逻辑还是面向过程。只不过我们从一个较为宏观的角度去看待问题了。
类和对象:
- 类是一系列具有相同特征和行为的事物的统称,是一个抽象的概念,不是真实存在的事物
- 属性:特征,通常定义在init方法中
- 方法:行为,python中以函数的方式来执行行为
用人话来讲述什么是类:
封装代码的是函数,那么封装函数的就是类。函数里面有好几个代码。类里面也有好几个类。
举例:
设计机器人类:
类名:Robot
属性:名字、颜色、身高
方法:问好、烧饭、跑步
类和对象的关系:
用类去创建一个或多个对象: 类是一个比较抽象的概念,就像机器人类很抽象。而对象是比较具体的概念,比如说阿尔法狗、chatgpt,也是个机器人它们就是个对象,非常具体。
类就相当于图纸,对象相当于图纸生产出来的具体的产品,而这个对象会运用方法去实现对应的功能。
定义类:
语法:
#类名的第一个字母通常要大写
class 类名():代码...
创建对象:
语法:
对象名.类名()
实例演示:
#创建一个机器人类
#所有类都默认继承object原始类
class Robot(object):"""# self 指的是调用该函数的对象#由于打印对象和打印self得到的内存地址相同,所以self指的是调用该函数的对象"""#类内的方法基本都带有self参数def run(self):print("我正在执行跑步")print(id(self))if __name__ == '__main__':#机器人aerfa是创建的一个实例对象aerfa = Robot()aerfa.run()print(id(aerfa))
魔法方法:
在Python里面,两个下划线开头 两个下划线结束的这类方法叫做魔法方法,指的是具有特殊功能的函数
__init __方法:
- 这个魔法方法,在创建一个对象时会默认被调用,只要实例化一个对象就会自动调用,不需要手动调用。
- init里面的self参数,不需要开发者传递,解释器会自动传递。
- 属性一般都写在init函数里面,init里面有多少参数,实例化对象的时候就要传入多少参数。
__ del __方法:
#创建一个机器人类
#所有类都默认继承object原始类
class Robot(object):"""# self 指的是调用该函数的对象#由于打印对象和打印self得到的内存地址相同,所以self指的是调用该函数的对象"""#类内的方法基本都带有self参数def __init__(self,name,age,sex):# 初始化方法,在实例化时会自动调用self.name = nameself.age = ageself.sex = sexdef __del__(self):#析构函数,当删除实例的时候,就会自动调用此方法#通过del关键字用来删除实例对象print(f"{self.name}被析构了")def run(self):print("我正在执行跑步")if __name__ == '__main__':#机器人aerfa是创建的一个实例对象aerfa = Robot("dog",18,"ta")#可通过对象.属性直接拿出属性print(aerfa.name)del aerfa# name 'aerfa' is not definedprint(aerfa.age)相关文章:
【面向对象编程1】——类和对象——如桃花来
目录索引 面向过程和面向对象的区别:面向过程:面向对象:总结: 类和对象:定义类:语法: 创建对象:实例演示: 魔法方法:__init __方法:__ del __方法…...
chat聊天系统消息消费时遇到的问题及优化思路(二)
1、前言 考虑下面几个条件下如何提升kafka的消费速度 消息要求严格有序,如chat聊天消息业务处理速度慢,如处理一条数据需要100ms分片不合理,如有的分区很闲,有的分区消息数量积压 2、解决方案 1、顺序问题 关于消息消费时存在…...
js正则中的match()
在前端开发中,正则表达式是一大利器。所以我们这次就来讨论下match()方法。 match本身是JavaScript语言中字符串对象的一个方法,该方法的签名是 match([string] | [RegExp]) 它的参数既可以是一个字符串,也可以是一个正则表达式。该方法绝…...
Apache 配置和应用
目录 构建虚拟 Web 主机 Options指令解释 Options指令常用选项 AllowOverride指令解释: 地址限制策略: httpd服务支持的虚拟主机类型包括以下三种: 基于域名的虚拟主机 1.为虚拟主机提供域名解析 2.为虚拟主机准备网页文档 3.添加虚拟…...
实现PyTorch/ONNX自定义节点操作的TensorRT部署
参考一 下面是基本步骤: 加载训练好的bev transformer网络权重参数: import torch from model import Modelmodel Model() model.load_state_dict(torch.load("path/to/weights"))定义新的自定义操作: import torch from torc…...
Shamir 秘密共享、GMW和BGW方案
一、Shamir秘密共享 Shamir秘密共享方案是一种将秘密拆分成多份并分配给多个参与者保存,只有在满足特定条件下才能恢复原始秘密的密码学方案。它具有良好的容错性、加法同态性和无条件安全性等特点。 具体地,Shamir秘密共享方案可以概括为以下步骤&…...
Day56【动态规划】583.两个字符串的删除操作、72.编辑距离
583.两个字符串的删除操作 力扣题目链接/文章讲解 视频讲解 1、确定 dp 数组下标及值含义 dp[i][j]:以下标 i 为结尾的字符串 word1,和以下标 j 为结尾的字符串 word2,想要达到相等,所需要删除元素的最少次数为 dp[i][j] 2、…...
Arnold图像置乱的MATLAB实现
这件事情的起因是这样的,我需要研究一下各种图像置乱的算法。然后在知乎上找到了一篇关于Arnold变化的文章,但是呢,这个人实际上是卖资料,代做大作业的。详细的代码根部不给你,则给我气坏了,必须要手动实现…...
ASP.NET Core
1. 入口文件 一个应用程序总有一个入口文件,是应用启动代码开始执行的地方,这里往往也会涉及到应用的各种配置。当我们接触到一个新框架的时候,可以从入口文件入手,了解入口文件,能够帮助我们更好地理解应用的相关配置…...
javascript基础二十二:举例说明你对尾递归的理解,有哪些应用场景
一、递归 递归(英语:Recursion) 在数学与计算机科学中,是指在函数的定义中使用函数自身的方法 在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数 其核心思想是把一个大型…...
hive中如何计算字符串中表达式
比如 select 1(2-3)(-4.1-3.1)-(4-3)-(-3.34.3)-1 col ,1(2-3)(-4.1-3.1)-(4-3)-(-3.34.3)-1 result \ 现在的需求式 给你一个字符串如上述col 你要算出result。 前提式 只有和-的运算,而且只有嵌套一次 -(4-3)没有 -(-4(3-(31)))嵌套多次。 第一步我们需要将运…...
如何将maven项目改为springboot项目?
将 Maven 项目转换为 Spring Boot 项目需要进行以下步骤: 1. 在 Maven 项目中添加 Spring Boot 的依赖。可以通过在 pom.xml 文件中添加以下依赖来实现: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>…...
Java与查找算法(5):哈希查找
一、哈希查找 哈希查找,也称为散列查找,是一种基于哈希表的查找算法。哈希表是一种数据结构,它将键(key)映射到值(value),使得查找某个键对应的值的时间复杂度为O(1)。哈希查找的过…...
Vercel部署个人博客
vercel 部署静态资源网站极其方便简单,并且有可观的访问速度,最主要的是免费部署。 如果你还没有尝试的话,强烈建议去使用一下。 演示博客演示http://202271.xyz/?vercel vercel 介绍 注册账号 进入Vercel官网https://vercel.com&#x…...
【论文阅读】An Object SLAM Framework for Association, Mapping, and High-Level Tasks
一、系统概述 这篇文章是一个十分完整的物体级SLAM框架,偏重于建图及高层应用,在前端的部分使用了ORBSLAM作为基础框架,用于提供点云以及相机的位姿,需要注意的是,这篇文章使用的是相机,虽然用的是点云这个…...
《metasploit渗透测试魔鬼训练营》学习笔记第六章--客户端渗透
四.客户端攻击 客户端攻击与服务端攻击有个显著不同的标识,就是攻击者向用户主机发送的恶意数据不会直接导致用户系统中的服务进程溢出,而是需要结合一些社会工程学技巧,诱使客户端用户去访问这些恶意数据,间接发生攻击。 4.1客户…...
华为OD机试真题 Java 实现【Linux 发行版的数量】【2023Q1 100分】
一、题目描述 Linux 操作系统有多个发行版,distrowatch.com 提供了各个发行版的资料。这些发行版互相存在关联,例如 Ubuntu 基于 Debian 只开发而 Mint 又基于 Ubuntu 开发,那么我们认为 Mint 同 Debian 也存在关联。 发行版集是一个或多个相关存在关联的操作系统发行版,…...
VMware ESXi 8.0U1a macOS Unlocker OEM BIOS (标准版和厂商定制版)
VMware ESXi 8.0 Update 1a macOS Unlocker & OEM BIOS (标准版和厂商定制版) ESXi 8.0U1 标准版,Dell HPE 联想 浪潮 定制版 请访问原文链接: https://sysin.org/blog/vmware-esxi-8-u1-oem/,查看最新版。原创作品,转载请保…...
Effective STL_读书笔记
Effective STL 1. 容器条例01:慎重选择容器类型条例02:不要试图编写独立于容器类型的代码条例03:确保容器中对象的拷贝正确而高效条例04:调用empty而不是检查size()是否为空条例05:区间成员函数优先于与之对应的单元素…...
通过yum:mysql5.6-msyql5.7-mysql8.0升级之路
一 前言 mysql的yum源 https://dev.mysql.com/downloads/repo/yum/ https://dev.mysql.com/get/mysq57-community-release-el7-7.noarch.rpm服务器信息 2c2g40GB [rootlocalhost ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) [rootlocalhost ~]# una…...
ESP32-S3 开发实战:从问题排查到功能优化
1. ESP32-S3开发环境搭建与常见问题 刚拿到ESP32-S3开发板时,我最先遇到的就是环境配置问题。这里分享几个新手容易踩的坑:首先是开发工具链的选择,官方推荐使用ESP-IDF或Arduino IDE。我建议初学者先用Arduino IDE上手,因为它的库…...
J1712-粒状巧克力糖包装机设计【颗粒状糖果包装机设计】【三维SW模型+6张CAD图纸+说明】
J1712-粒状巧克力糖包装机设计【颗粒状糖果包装机设计】【三维SW模型6张CAD图纸说明】 传送带电机刚启动那会儿,总有几个巧克力豆卡在导流槽边缘。凌晨三点的实验室里,我盯着SolidWorks里旋转的螺旋送料机构模型,突然意识到——这玩意儿得做成…...
开源推荐系统项目数据管理实战:从零构建高质量训练数据集
开源推荐系统项目数据管理实战:从零构建高质量训练数据集 【免费下载链接】fun-rec 推荐系统入门教程,在线阅读地址:https://datawhalechina.github.io/fun-rec/ 项目地址: https://gitcode.com/datawhalechina/fun-rec 你是否曾满怀热…...
安卓应用按钮样式问题及解决方案
在开发安卓应用的过程中,我们常常会遇到一些看似简单但实际上隐藏着复杂问题的样式问题。今天我们来探讨一个在更换设备后按钮样式发生变化的问题。 问题描述 一位开发者在Android Studio中开发了一个食谱应用。当他从一台手机切换到另一台手机运行应用时,发现所有的按钮都…...
等保测评后,我的CentOS/Ubuntu服务器安全加固清单还加了这些
等保测评后,我的CentOS/Ubuntu服务器安全加固清单还加了这些 在完成等保测评基础整改后,许多安全工程师常陷入"合规即安全"的误区。实际上,等保要求只是安全基线的最低标准。本文将分享我在实际运维中积累的合规之上的实战加固技巧…...
龙虾agent-browser获得chromium包问题
小龙虾非常火爆,在装agent-browser的时候,普通人往往被chromium的安装堵死了。网上的跨域安装方法一大堆,包括用镜像站点,国内所有的镜像站点都不行。但是真正能走通的,我到最后也没有试出来。最后只能自己想出一种手动…...
Aurix/Tricore实验解析:从链接脚本到汇编指令的Trap向量表构建
1. 理解Trap机制与向量表基础 在Aurix/Tricore架构中,Trap(陷阱)是处理器响应异常事件的硬件机制,相当于汽车的安全气囊——平时看不见,但遇到碰撞时会立即触发保护。与中断不同,Trap是同步触发的ÿ…...
Hunyuan-MT-7B保姆级教程:Pixel Language Portal在树莓派5上的轻量级翻译终端部署
Hunyuan-MT-7B保姆级教程:Pixel Language Portal在树莓派5上的轻量级翻译终端部署 1. 项目介绍与核心价值 Pixel Language Portal(像素语言跨维传送门)是一款基于Tencent Hunyuan-MT-7B大语言模型的创新翻译工具。与传统翻译软件不同&#…...
GyroFlow:用陀螺仪数据重塑视频稳定技术
GyroFlow:用陀螺仪数据重塑视频稳定技术 【免费下载链接】gyroflow Video stabilization using gyroscope data 项目地址: https://gitcode.com/GitHub_Trending/gy/gyroflow 在数字影像创作领域,画面稳定性直接决定作品专业度。无论是运动相机拍…...
如何一键备份QQ空间历史说说:完整数据备份与隐私保护指南
如何一键备份QQ空间历史说说:完整数据备份与隐私保护指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否担心那些记录青春的QQ空间说说会随着时间流逝而消失…...
