一、前言

在这里我想通过用Python和Java语言的类比来对Python中的self参数和__init__(self)方法做一个深入的解释。这样可以加深对self参数和__init__(self)方法的理解。
废话不多说,直接用代码举例,然后通过代码来理解Python中的self参数和__init__(self)方法。
我们用一个学生类来作为案例。

二、Python和Java类比

  • 一些tips:
  • self代表的是类的实例对象
  • self是指当前被调用的对象

2.1 Python

案例介绍:创建一个Stu类,属性为学号、姓名、性别,方法为打印出学生的信息。

class Stu:def __init__(self,stuid,name,gender):self.stuid = stuidself.name = nameself.gender = genderdef info(self):print('学号:{} 姓名:{} 性别:{}'.format(self.stuid, self.name, self.gender))djk = Stu(123,'djk',1)
djk.info()
  • 注解:
  • self是指当前被调用的实例对象,__init__(self)是类的构造方法,负责初始化一个实例对象的。
  • 举例:假如我们要初始化了一个实例对象djk时,Python会自动调用__init__(self)方法,这时,self代表的是要创建的这个对象djk;self.stuid = stuid时代表什么意思呢:首先self代表当前对象djk,self.stuid就是当前对象djk的属性stuid被赋予为stuid这个值,也就是123;即形参与实参相互对应,即stuid<–>123,name<–>‘djk’,gender<–>1。然后djk对象调用Info(self)方法,其实底层代码是Info(djk),但Python为了简洁,把djk给省略了,直接写成djk.info()即可,其实self还是指向的是djk这个实例对象。

2.2 Java

public class Stu {// attributeprivate Integer numid;private String name;private boolean gender;// functionpublic Stu(Integer numid, String name, boolean gender) {this.numid = numid;this.name = name;this.gender = gender;}public void  info(Stu stu){System.out.println(stu.numid + stu.name + stu.gender);}// 测试public static void main(String[] args) {Stu djk = new Stu(123,"djk",false);djk.info(djk);}
}

这里因为主要介绍的是Python的self参数和__init__(self)方法,所以不对Java的相关知识做介绍,这里只给出对应关系。

Python Java 代表含义
self this 指当前被调用的对象
__init__(self) Stu构造函数 指构造函数,在实例化时,会自动被调用

解惑(三)----- 深入理解Python中的self参数和__init__(self)方法--通过类比Java语言相关推荐

  1. python参数传递方法_深入理解python中函数传递参数是值传递还是引用传递

    python 的 深入理解python中函数传递参数是值传递还是引用传递 目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是&q ...

  2. python怎么理解函数的参数_理解Python中函数的参数

    定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解 ...

  3. python装饰器作用-理解python中的装饰器

    一 什么是装饰器? 正如其名,装饰器的作用是为已经存在的对象增加额外功能(装饰),由此可使已有函数在无需代码改动的情况下增加额外功能:装饰器的本质是嵌套的函数且返回函数对象,即闭包.有关闭包的概念,可 ...

  4. 深入理解Python中的全局解释锁GIL

    深入理解Python中的全局解释锁GIL 转自:https://zhuanlan.zhihu.com/p/75780308 注:本文为蜗牛学院资深讲师卿淳俊老师原创,首发自公众号https://mp. ...

  5. 数据科学 IPython 笔记本 9.3 理解 Python 中的数据类型

    9.3 理解 Python 中的数据类型 本节是<Python 数据科学手册>(Python Data Science Handbook)的摘录. 译者:飞龙 协议:CC BY-NC-SA ...

  6. 更深入理解 Python 中的迭代

    (点击上方公众号,可快速关注) 编译: linux中国 / MjSeven   英文:  Trey Hunner https://linux.cn/article-9681-1.html 深入探讨 P ...

  7. 理解 Python 中的 for 循环

    译者注: 本文翻译自 Trey Hunner 于 2019 年 6 月 18 日发表的文章 Loop Better: a deeper look at iteration in Python 文中括号 ...

  8. 深入理解python中None的真正用法

    深入理解python中None的用法 一.首先应该理解None python中的是一种特殊的对象,对象类型为NoneType 竟然是对象,那么就应该有对象的属性,但是None它比较特殊,它的值就是No ...

  9. 深入理解Python中的字符编码、文件处理和函数

    博客核心内容: 1.Python基础之字符编码的介绍 2.Python中文件处理的介绍 3.Python中函数的介绍 4. File.readlines(sizehint) 函数 一.Python基础 ...

最新文章

  1. Cassandra使用的各种策略
  2. 提升系统 10 倍性能的 10 个建议!
  3. 人体姿态估计 自顶向下与自底向上
  4. Spring-AOP 通过配置文件实现 前置增强
  5. mysql数据库制定位置_MySQL数据库在指定位置增加字段
  6. LDAP-轻量级目录访问协议(统一认证)
  7. localToGlobal 本地转换全局
  8. VideoCLIP-FacebookCMU开源视频文本理解的对比学习预训练,性能SOTA!适用于零样本学习!...
  9. VS2008建立webserver(转)
  10. ASN.1编解码:asn1c的基本使用
  11. 【HTML+CSS网页设计与布局 从入门到精通】第5章-表格
  12. python字典元素的值是否相等_对Python中等值和大小比较
  13. linux能力集机制,linux能力机制
  14. 吐血推荐泛绿色编程工具: EditPlus 已于 2010-07-14 升级到 v3.12(602)
  15. python面向对象实现算术编码
  16. Matlab 数据类型
  17. 大数据和云计算到底是何关系?
  18. node配置微信小程序解密消息以及推送消息
  19. ZYNQ学习之路19.在SDx中使用xfOpenCV图像加速处理
  20. ubuntu打不开硬盘

热门文章

  1. ASP.NET MVC随想录——漫谈OWIN
  2. 推荐10款来自极客标签的超棒前端特效[第五期]
  3. CNN卷积神经网络推导和实现
  4. 使用tensorflow出现 ImportError: DLL load failed: 找不到指定的程序
  5. oracle行级的触发器,Oracle触发器Trigger2行级
  6. 科大星云诗社动态20210429
  7. 云炬WEB开发笔记3-1 项目初始化概要
  8. c语言vs开发小型数据库,用C语言开发小型数据库管理系统代码
  9. VTK修炼之道61:体绘制_光线投影+最大密度投影+等值面法
  10. FIR数字滤波器设计_窗函数法