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

一、前言

在这里我想通过用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 = stuid
        self.name = name
        self.gender = gender
    def 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 {
    
    
	 // attribute
    private Integer numid;
    private String name;
    private boolean gender;

    // function

    public 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构造函数 指构造函数,在实例化时,会自动被调用

猜你喜欢

转载自blog.csdn.net/dongjinkun/article/details/113407809