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

【面向对象编程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 项目需要进行以下步骤&#xff1a; 1. 在 Maven 项目中添加 Spring Boot 的依赖。可以通过在 pom.xml 文件中添加以下依赖来实现&#xff1a; <dependency> <groupId>org.springframework.boot</groupId> <artifactId>…...

Java与查找算法(5):哈希查找

一、哈希查找 哈希查找&#xff0c;也称为散列查找&#xff0c;是一种基于哈希表的查找算法。哈希表是一种数据结构&#xff0c;它将键&#xff08;key&#xff09;映射到值&#xff08;value&#xff09;&#xff0c;使得查找某个键对应的值的时间复杂度为O(1)。哈希查找的过…...

Vercel部署个人博客

vercel 部署静态资源网站极其方便简单&#xff0c;并且有可观的访问速度&#xff0c;最主要的是免费部署。 如果你还没有尝试的话&#xff0c;强烈建议去使用一下。 演示博客演示http://202271.xyz/?vercel vercel 介绍 注册账号 进入Vercel官网https://vercel.com&#x…...

【论文阅读】An Object SLAM Framework for Association, Mapping, and High-Level Tasks

一、系统概述 这篇文章是一个十分完整的物体级SLAM框架&#xff0c;偏重于建图及高层应用&#xff0c;在前端的部分使用了ORBSLAM作为基础框架&#xff0c;用于提供点云以及相机的位姿&#xff0c;需要注意的是&#xff0c;这篇文章使用的是相机&#xff0c;虽然用的是点云这个…...

《metasploit渗透测试魔鬼训练营》学习笔记第六章--客户端渗透

四.客户端攻击 客户端攻击与服务端攻击有个显著不同的标识&#xff0c;就是攻击者向用户主机发送的恶意数据不会直接导致用户系统中的服务进程溢出&#xff0c;而是需要结合一些社会工程学技巧&#xff0c;诱使客户端用户去访问这些恶意数据&#xff0c;间接发生攻击。 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 标准版&#xff0c;Dell HPE 联想 浪潮 定制版 请访问原文链接&#xff1a; https://sysin.org/blog/vmware-esxi-8-u1-oem/&#xff0c;查看最新版。原创作品&#xff0c;转载请保…...

Effective STL_读书笔记

Effective STL 1. 容器条例01&#xff1a;慎重选择容器类型条例02&#xff1a;不要试图编写独立于容器类型的代码条例03&#xff1a;确保容器中对象的拷贝正确而高效条例04&#xff1a;调用empty而不是检查size()是否为空条例05&#xff1a;区间成员函数优先于与之对应的单元素…...

通过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…...

C语言数据存储 — 整型篇

C语言数据存储 — 整型篇 前言1. 数据类型介绍1.1 类型的基本分类 2. 整型在内存中的存储2.1 原码、反码、补码2.1.1 为什么数据存放在内存中存放的是补码 2.2 大小端介绍2.2.1 什么是大小端&#xff1f;2.2.2 为什么有大端和小端&#xff1f;2.2.3 一道百度系统工程师笔试题 3…...

高级Excel功能教程_编程入门自学教程_菜鸟教程-免费教程分享

教程简介 Excel是办公室自动化中非常重要的一款软件&#xff0c;Excel函数则是Excel中的内置函数。Excel函数共包含11类&#xff0c;分别是数据库函数、日期与时间函数、工程函数、财务函数、信息函数、逻辑函数、查询和引用函数、数学和三角函数、统计函数、文本函数以及用户…...

ChatGPT会取代低代码开发平台吗?

编程作为一种高端技能&#xff0c;向来是高收入高科技的代名词。近期&#xff0c;伴随着ChatGPT在全球的爆火&#xff0c;过去通过窗口“拖拉拽”的所见即所得方式的低代码开发模式&#xff0c;在更加智能和更低成本的AI搅局之下&#xff0c;又面临了更深层次的影响。 低代码平…...

Linux :: 文件内容操作【5】:echo 指令 与 输入重定向、输出重定向、追加重定向在文件内容写入中的简单用法!

前言&#xff1a;本篇是 Linux 基本操作篇章的内容&#xff01; 笔者使用的环境是基于腾讯云服务器&#xff1a;CentOS 7.6 64bit。 学习集&#xff1a; C 入门到入土&#xff01;&#xff01;&#xff01;学习合集Linux 从命令到网络再到内核&#xff01;学习合集 说明&#x…...

【RocketMQ】重试机制及死信消息处理

【RocketMQ】重试机制及死信消息处理 文章目录 【RocketMQ】重试机制及死信消息处理1. 重试机制1.1 生产者重试1.2 消费者重试1.2.1 死信队列 参考文档&#xff1a; 官方文档 1. 重试机制 1.1 生产者重试 rocketmq生产者发送消息失败默认重试2次(同步发送为2次&#xff0c;异…...

Mysql DDL执行方式-pt-osc介绍 | 京东云技术团队

1 引言 大家好&#xff0c;接着上次和大家一起学习了《MySQL DDL执行方式-Online DDL介绍》&#xff0c;那么今天接着和大家一起学习另一种MySQL DDL执行方式之pt-soc。 在MySQL使用过程中&#xff0c;根据业务的需求对表结构进行变更是个普遍的运维操作&#xff0c;这些称为…...

C++ stack容器介绍

&#x1f914;stack容器介绍&#xff1a; &#x1f4d6; stack是一种数据结构&#xff0c;也可以被称为堆栈。它是一个容器&#xff0c;只允许在最顶层进行插入和删除&#xff0c;并且只能访问最后一个插入的元素。这个元素称为栈顶。所有新插入的元素都被放置在栈顶上面&#…...

在 Git 中撤消更改的 6 种方法!

目录 1. 修改最近的提交 2. 将分支重置为较旧的提交 硬重置 软重置分支 创建备份分支 3. 交互式变基 删除旧提交 改写提交消息 编辑旧提交 压缩 4. 还原提交 5. 签出文件 6. 使用 Git Reflog 当使用 Git 进行项目代码管理时&#xff0c;难免会出现一些错误操作或需…...

LiveGBS国标GB/T28181国标平台功能-电子地图移动位置订阅mobileposition地图定位GPS轨迹坐标位置获取redis获取位置

LiveGBS国标GB/T28181国标平台功能-电子地图移动位置订阅mobileposition地图定位GPS轨迹坐标位置获取redis获取位置 1、位置订阅1.1、国标设备编辑1.2、选择设备开启位置订阅1.3、全局开启位置订阅1.4、通过目录订阅获取位置(少数情况) 2、经纬度信息查询2.1、访问接口获取2.1.…...

编程(38)----------计算机的部分原理

本篇主要总结一些计算机的理论部分. 计算机在发展历程中,无论是最早的巨无霸机器,还是现在小到可以拿在手中的掌机.只要其本质上是计算机,在最基础的结构上,都是以冯诺依曼体系所构建的. 冯诺依曼体系大致将计算机分为几个最重要的部分:输入,输出,中央处理器,存储设备.也就是…...