第15天学习:类和对象的概念

我用大白话+生活化例子帮你彻底搞懂类和对象!🐶

🌈 1分钟快速理解版

= 设计图纸(比如:手机设计图)
对象 = 根据图纸造出来的实物(比如:你的iPhone 15和小明的华为P60)

📚 详细讲解版

一、类和对象的关系

1. 类(Class)—— “设计模板”

  • 定义:描述某一类事物的共同特征
  • 特点:抽象的、不占用内存空间
  • 示例:
    • 🐶 动物类:会吃、会跑
    • 📱 手机类:品牌、颜色、打电话功能

2. 对象(Object)—— “具体实物”

  • 定义:根据类创建出来的具体实例
  • 特点:具体的、会占用内存空间
  • 示例:
    • 你家的金毛(动物类的实例)
    • 我的华为Mate60(手机类的实例)

二、Python代码演示

# 🎨 定义类(设计图纸)
class Dog:# 初始化方法(给狗狗起名)def __init__(self, name):self.name = name  # 狗狗的名字# 定义方法(狗狗技能)def bark(self):print(f"{self.name}:汪汪汪!")# 🐕 创建对象(制造实物)
my_dog = Dog("旺财")    # 创建第一只狗
your_dog = Dog("来福")  # 创建第二只狗# 🦴 使用对象
my_dog.bark()   # 输出:旺财:汪汪汪!
your_dog.bark() # 输出:来福:汪汪汪!

三、生活化对比表

类(Class)对象(Object)
性质抽象概念(设计图)具体实例(实物产品)
示例手机设计图我的iPhone 15
内存不占用内存占用内存空间
数量1个类可创建多个对象
操作定义属性和方法调用方法、修改属性

四、3个核心要点

  1. 类先于对象存在:就像先有设计图才能生产手机
  2. 每个对象独立:修改旺财的名字不会影响来福
  3. self的秘密:Python会自动把对象自己传给方法的第一个参数

💡 新手常见问题

Q:为什么要用类?
A:就像工厂批量生产手机——类能批量创建具有相同特征的对象,提高代码复用性

Q:__init__有什么作用?
A:相当于"出厂设置",给每个新对象添加初始属性(给手机装上电池和屏幕)

Q:self是干什么的?
A:相当于"这个手机自己",让对象能访问自己的属性和方法(就像每部手机都知道自己的颜色)

试试这个案例,你会更清楚:

class Phone:def __init__(self, brand):self.brand = branddef call(self, number):print(f"{self.brand}正在拨打:{number}")my_phone = Phone("华为")
your_phone = Phone("苹果")my_phone.call("13800138000")    # 华为正在拨打:13800138000
your_phone.call("400-1234567")  # 苹果正在拨打:400-1234567

好的,让我们用简单的方式来讲解类和对象的概念,以及如何在Python中定义类和创建对象。

什么是类?什么是对象?

  • :类可以想象成一个蓝图或者模板。它定义了一组具有相同特征和行为的对象的集合。比如,我们可以定义一个“动物”类,这个类会包含所有动物共有的特征(如名字、年龄)和行为(如吃、睡)。
  • 对象:对象是类的具体实例。比如,根据“动物”这个类,我们可以创建一个具体的“猫”对象,这个对象会有自己的名字、年龄,并且可以执行吃、睡的行为。

类的定义和对象的创建

1. 定义一个类

在Python中,我们使用class关键字来定义一个类。以下是一个简单的“动物”类的定义:

class Animal:def __init__(self, name, age):self.name = nameself.age = agedef eat(self):print(f"{self.name} 正在吃饭。")def sleep(self):print(f"{self.name} 正在睡觉。")

这里,Animal是类的名称。__init__是一个特殊的方法,用于初始化对象。self代表类的实例本身,nameage是对象的属性,eatsleep是对象的行为。

2. 创建一个对象

创建对象实际上就是创建类的实例。以下是如何创建一个“猫”对象:

# 创建一个名为“小猫”的猫,年龄为3岁
my_cat = Animal("小猫", 3)

这里,my_cat就是我们创建的“猫”对象。

3. 使用对象

创建对象后,我们可以使用它的属性和行为:

# 输出猫的名字和年龄
print(my_cat.name)  # 输出:小猫
print(my_cat.age)   # 输出:3
# 让猫吃饭和睡觉
my_cat.eat()  # 输出:小猫 正在吃饭。
my_cat.sleep()  # 输出:小猫 正在睡觉。

这样,我们就简单了解了类和对象的概念,以及如何在Python中定义类和创建对象。希望这个解释能帮助你更好地理解这些概念!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 命令大全完整版(05)

2. Linux 系统设置命令 export 功能说明:设置或显示环境变量。语  法:export [-fnp][变量名称][变量设置值]补充说明:在 shell 中执行程序时,shell 会提供一组环境变量。export 可新增、修改或删除环境变量,供后续…

deepseek清华大学第二版 如何获取 DeepSeek如何赋能职场应用 PDF文档 电子档(附下载)

deepseek清华大学第二版 DeepSeek如何赋能职场 pdf文件完整版下载 https://pan.baidu.com/s/1aQcNS8UleMldcoH0Jc6C6A?pwd1234 提取码: 1234 或 https://pan.quark.cn/s/3ee62050a2ac

01 冲突域和广播域的划分

目录 1、冲突域和广播域的划分 1.1、冲突域 1.2、广播域 1.3、对比总结 1.4、冲突域与广播域个数计算例题 2、交换机和路由器的结构 2.1、交换机的结构 2.2、路由器的结构 1、冲突域和广播域的划分 1.1、冲突域 冲突域是指网络中可能发生数据帧冲突的物理范围。当多…

vLLM学习1

调用方式 一、vLLM 提供的两种调用方式 1. Offline Batched Inference(离线批处理) 调用特点:一次性传入一批(batch)的请求,等待所有请求都处理完毕后,一次性返回推理结果。对用户而言&#x…

SpringSecurity请求流转的本质

1. SpringSecurity核心源码分析 分析SpringSecurity的核心原理,那么我们从哪开始分析?以及我们要分析哪些内容? 系统启动的时候SpringSecurity做了哪些事情?第一次请求执行的流程是什么?SpringSecurity中的认证流程是怎么样的?1.1 系统启动 当我们的Web服务启动的时候,…

聊一聊vue如何实现角色权限的控制的

大家好,我是G探险者。 关于角色与权限控制,通常是分为两大类:一种是菜单权限;一种是操作权限。 菜单权限是指,每个角色对应着可以看到哪些菜单,至于每个菜单里面的每个按钮,比如增删改查等等这类…

HTML之JavaScript DOM操作元素(2)

HTML之JavaScript DOM操作元素(2) 4.增删元素var element document.createElement("元素名") 创建新元素父元素.appendChild(子元素) 在父元素中追加子元素父元素.insertBefore(新元素,参照元素) 在特定元素之前新增元…

解决华硕主板的Boot界面无法设置M.2的系统启动盘问题

一、问题描述 当我们的华硕主板电脑开机后,发现电脑无法正常进入Windows系统界面,直接显示PXE网络网络信息;且知道我们进入到BIOS界面也无法找到选择系统盘,界面只显示【UEFI:PXE IP4 Intel(R) Ethernet】、【UEFI:PXE IP6 Intel(…

音视频封装格式:多媒体世界的“容器”与“桥梁”

一、音视频封装格式的核心概念 音视频封装格式(容器)是一种将编码后的视频、音频、字幕等数据按规则整合的文件格式,其本质是多媒体数据容器,核心作用包含: 同步多轨道数据:通过时间戳(PTS/DTS)实现音画同步。组织数据流:统一管理视频流、音频流、字幕流等,并存储元…

Jenkins 配置 Credentials 凭证

Jenkins 配置 Credentials 凭证 一、创建凭证 Dashboard -> Manage Jenkins -> Manage Credentials 在 Domain 列随便点击一个 (global) 二、添加 凭证 点击左侧 Add Credentials 四、填写凭证 Kind:凭证类型 Username with password: 配置 用…

Unity 3D模型边缘锯齿严重

Unity开发3D游戏时候,模型边缘会显示严重锯齿,这需要设置抗锯齿,同时也会增加显卡负担,是适配不同硬件的自定义配置选项 摄像机对象检查器中找到[渲染]设置"抗锯齿"为FXAA或者SMAA项目设置->图形->点选正在使用的渲染管线->定位到管线文件后,查看管线的检查…

Docker:Docker从入门到精通(一)- Docker简介

一、前言 通过本专栏的学习,我们将了解   1. 掌握Docker基础知识,能够理解Docker镜像与容器的概念   2. 完成Docker安装与启动   3. 掌握Docker镜像与容器相关命令   4. 掌握Tomcat Nginx 等软件的常用应用的安装   5. 掌握docker迁移与备份相…

【面试系列】Java开发--AI常见面试题

文章目录 1、实际工作或学习中用过哪些Ai工具1.1、AI编程1.2、AI对话聊天1.3、AI图像工具1.4、AI办公工具 2、谈谈你知道的AI领域的一些常见词汇及其含义的理解? 例如AIGC、LLM、DeepLearning分别是什么意思?2.1、AIGC(Artificial Intelligen…

在VSCode中接入deepseek

注册就送14元2000万tokens。 https://cloud.siliconflow.cn/i/rnbA6i6U各种大模型 下面介绍我是如如接入vscode的 左边生成一个key,呆会vscode要用,不然401. 打开vscod,电脑能上网。下插件。 下好要配置 点它一下。 要配置,全…

【Ubuntu】GPU显存被占用,但显示没有使用GPU的进程

文章目录 一、问题描述二、解决方案2.1 寻找问题进程2.2 尝试杀死相关进程2.3 投放核弹,一键全杀2.4 再次查看GPU使用情况 参考资料 一、问题描述 今天使用服务器的时候发现gpu被占了很多内存,但是使用 nvidia-smi 命令并没有发现占这么多显存的进程&am…

基于Python+django+mysql旅游数据爬虫采集可视化分析推荐系统

2024旅游推荐系统爬虫可视化(协同过滤算法) 基于Pythondjangomysql旅游数据爬虫采集可视化分析推荐系统 有文档说明 部署文档 视频讲解 ✅️基于用户的协同过滤推荐算法 卖价就是标价~ 项目技术栈 Python语言、Django框架、MySQL数据库、requests网络爬虫…

Redis 如何实现消息队列?

在当今的分布式系统架构中,消息队列起着至关重要的作用,它能够帮助系统实现异步通信、解耦组件以及缓冲流量等功能。Redis,作为一款高性能的键值对存储数据库,也为我们提供了便捷的方式来构建消息队列。今天,咱们就深入…

【多线程-第三天-NSOperation的练习-tableView异步下载网络图片-下载操作缓存池 Objective-C语言】

一、下载操作缓存池 1.下面我们来看操作缓存池,我们先演示一下问题,看看为什么要加这么一个操作缓存池,什么是操作缓存池,不用管呢,我们先来看啊,首先有什么问题, 看这个问题之前,我这儿写一个touch,点击屏幕的时候调用, 额,不能点击屏幕啊,因为现在屏幕点不着,我…

【2025深度学习环境搭建-1】在Win11上用WSL2和Docker解锁GPU加速

建议有: 较新的win11电脑,GPU是nvidia一点点Linux基础一点点Docker基础 一、安装WSL2 【控制面板】》【程序】》【启用或关闭Windows功能】 打开三个功能:【Hyper-V】【Virtual Machine Platform】【适用于Linux的Windows子系统】 可能看…

深入探索 DeepSeek 在数据分析与可视化中的应用

在数据驱动的时代,快速且准确地分析和呈现数据对于企业和个人都至关重要。DeepSeek 作为一款先进的人工智能工具,凭借其强大的数据处理和可视化能力,正在革新数据分析的方式。 1. 数据预处理与清洗 在进行数据分析前,数据预处理…