首页 > 编程语言 >最通俗理解python中的self究竟是什么?

最通俗理解python中的self究竟是什么?

时间:2024-10-10 08:49:30浏览次数:11  
标签:name python self introduce grade 实例 通俗 方法

python中,self 是一个类的方法(构造函数)中第一个参数,表示实例自身。简单来说,它让类的方法能够访问属于该实例的属性和方法。我们可以把 self 想象成你在类内部给实例(实参)的“自我指代”,表示这个实例“我自己”的什么什么性质。

类比和形象解释:

假设你有一张学生表,每个学生有自己的名字、年级等信息。self 就好像是每个学生自我介绍时的“我”,比如说:“我是张三,我的年级是二年级”。

在编程里,通过 self,实例就可以“知道”自己的名字、年级等属性是什么,并且能调用自己专属的方法。是不是每个人都会自称“我”?所以这就让每个人都能适用上了

它就像java中的this

例子:

我们来看一个简单的类和如何用 self

class Student:
    def __init__(self, name, grade):
        # 初始化方法,用来定义实例的初始状态
        self.name = name  # self.name 是实例的名字
        self.grade = grade  # self.grade 是实例的年级

    def introduce(self):
        # 使用 self 来访问实例的属性
        return f"Hi, I am {self.name} and I am in grade {self.grade}."

# 创建一个 Student 类的实例
student1 = Student("John", 3)

# 调用 introduce 方法
print(student1.introduce())
  1. __init__ 是一个特殊的方法(构造函数),在创建类的实例时会被调用。self.name = name 的意思是“这个实例的名字属性等于传入的名字参数”。
  2. 当我们调用 student1.introduce() 时,Python 自动把 student1 作为 self 传递给 introduce 方法。所以在方法内部,self.name 实际上就是 student1 的名字属性。
  3. 也就是说给每个传入的参数都定义了

没有 self 的对比:

如果我们不使用 self,类的方法和属性就不知道是哪个实例的。所以 self 是必须的,表明你在操作的具体是哪个对象。

更形象的解释:

如果你和一群同学在一起,而你要向别人介绍自己,你会说“我是小明”而不是“他是小明”。同样,self 就像是类中的实例在说:“我自己是谁、我有什么属性和能力”,而不是在说别人。

和c语言对比

而在c语言中并没有可类比的,这是因为self是面对对象oop。

在 C 语言中,结构体(struct)可以用于定义某种数据类型,它可以包含多个字段。我们可以把它类比成 Python 中的类。区别是,C 语言中的 struct 只是数据的集合,不包括方法(函数)。

  • 在 C 中,结构体 Student 用来存储数据,函数 introduce 接收结构体的指针,通过指针访问结构体的成员。

  • 在 Python 中,类 Student 是数据和方法的结合体,self 自动代表类的实例,相当于 C 语言中手动传递的结构体指针。

  • 在 C 语言中,你必须手动传递指针给函数,这样函数才能操作具体的结构体实例。在 Python 中,self 就是这个实例指针,Python 自动把它传递给类方法。

标签:name,python,self,introduce,grade,实例,通俗,方法
From: https://blog.csdn.net/2301_80060871/article/details/142810608

相关文章

  • 力扣1436. 旅行终点站 python
    给你一份旅游线路图,该线路图中的旅行线路用数组 paths 表示,其中 paths[i]=[cityAi,cityBi] 表示该线路将会从 cityAi 直接前往 cityBi 。请你找出这次旅行的终点站,即没有任何可以通往其他城市的线路的城市。题目数据保证线路图会形成一条不存在循环的线路,因此恰有......
  • # 使用Python爬虫抓取豆瓣电影标题# 使用Python爬虫抓取豆瓣电影标题
    一、前言在这个小项目中,我们将学习如何使用Python的requests库和lxml库来爬取豆瓣电影首页上的电影标题,并将这些标题保存到一个文本文件中。这不仅能够帮助我们了解基本的网页抓取技术,还能让我们熟悉数据处理的基本流程。二、环境准备确保你的开发环境中已经安装了以下Py......
  • 基于yolov8、yolov5的PCB板缺陷检测系统(含UI界面、数据集、训练好的模型、Python代码)
    blog.csdnimg.cn/direct/6f53422ed9fd44dc8daad6dc5481c4c9.png)项目介绍项目中所用到的算法模型和数据集等信息如下:算法模型:  yolov8、yolov8+SE注意力机制或yolov5、yolov5+SE注意力机制,直接提供最少两个训练好的模型。模型十分重要,因为有些同学的电脑......
  • Python基于uniapp+Android平台的校园论坛交流系统 微信小程序z0c7d
    目录项目介绍具体实现截图开发者工具介绍技术路线解决的思路性能/安全/负载方面开发语言以及框架介绍数据库设计python-flask核心代码部分展示python-django核心代码部分展示详细视频演示源码获取项目介绍校园论坛系统设计的目的是为用户提供失物招领、二手闲置、跑......
  • Python,ModuleNotFoundError: No module named 'paho'
     Exceptioninthreaddjango-main-thread:    frompaho.mqttimportclientasmqtt_clientModuleNotFoundError:Nomodulenamed'paho'  解释:ModuleNotFoundError:Nomodulenamed'paho'表示Python解释器无法找到名为paho的模块。这通常意味着paho-mqtt客户端......
  • VSCode配置Python(记录)
    python安装官网在线安装或者下载离线包(勾选添加path环境变量)python指定版本运行把对应版本的python.exe复制一下,粘贴改名加个对应版本,因为添加了环境变量的缘故所以可以直接在命令窗中运行运行测试对应项目创建虚拟环境(包管理)tips:当然了,也可以用anaconda管理,但是加载比较......
  • python 打包 py 文件 为exe
    使用pyinstaller来进行打包pipinstallpyinstaller可能需要全局科学代理上网或者修改下载源地址执行命令图标path:C:\desktop\icon文件path:C:\pycharm\project\bingdundun.exe1、指定文件路径打包:pyinstaller-FC:\pycharm\project\bingdundun.exe2、不带窗......
  • python+flask计算机毕业设计银行资金账户管理系统(程序+开题+论文)
    文件加密系统的设计与实现tp835本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展和金融业务的日益复杂化,银行资金账户管理系统成为现代银行业不可或缺的一部分。传......
  • python+flask计算机毕业设计影评网站系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网的快速发展和普及,影视娱乐产业迎来了前所未有的发展机遇。观众对于电影的选择和评价日益多元化,传统的电影宣传和评价方式已难以......
  • python+flask计算机毕业设计智慧外贸平台(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着全球化和信息技术的飞速发展,外贸行业正经历着前所未有的变革。传统的外贸模式在效率、信息透明度以及服务体验上已难以满足当前市场的......