疑問(3)----- Pythonのselfパラメーターと__init __(self)メソッドを深く理解する-Java言語との類似性

I.はじめに

ここでは、PythonとJava言語のアナロジーを使用して、Pythonのselfパラメーターと__init __(self)メソッドについて詳しく説明します。これにより、selfパラメーターと__init __(self)メソッドの理解を深めることができます。
あまりナンセンスではありません。例としてコードを使用してから、コードを使用してPythonのselfパラメーターと__init __(self)メソッドを理解してください。
ケースとして学生クラスを使用します。

2つ、PythonとJavaのアナロジー

  • いくつかのヒント:
  • selfは、クラスのインスタンスオブジェクトを表します
  • selfは、現在呼び出されているオブジェクトを指します

2.1 Python

ケースの紹介:Stuクラスを作成します。属性は学生ID、名前、性別であり、メソッドは学生の情報を印刷することです。

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は現在のオブジェクトの属性stuidです。djkにはstuidの値123が割り当てられます。つまり、フォームの実際のパラメーターは互いに参加します。つまり、stuid <–> 123 、名前<–> 'djk'性別<–> 1。次に、djkオブジェクトはInfo(self)メソッドを呼び出します。実際、基になるコードはInfo(djk)ですが、Pythonは簡潔にするためにdjkを省略しており、djk.info()として直接記述できます。 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の自己パラメーターと__init __(self)メソッドであり、Java関連の知識の紹介はないため、ここでは対応する関係のみを示します。

Python Java 表現
自己 この 現在呼び出されているオブジェクトを指します
__init __(self) Stuコンストラクター インスタンス化されると自動的に呼び出されるコンストラクターを参照します

おすすめ

転載: blog.csdn.net/dongjinkun/article/details/113407809