1. ホーム
  2. java

[解決済み] PythonのselfとJavaのthisの違い

2022-03-09 06:18:21

質問

昔、Pythonを少しやったことがあります。しかし、今はJavaに移行しています。Pythonの"self"メソッドとJavaの"this"に違いがあるかどうかを知りたいと思います。

self"はキーワードではなく、"this"はキーワードであることは知っています。そしてそれは、私が理解できたことのほとんどです。他に何か見逃していることはありますか?

どのように解決するのですか?

について self をPythonで作成しました(以下はソースです。 Pythonの自己解説 ):

を使用する必要がある理由は 自己 Pythonはインスタンスの属性を参照するために@構文を使用しないためです。Pythonはメソッドが属するインスタンスを自動的に渡すが、自動的に受け取らない方法でメソッドを行うことにしました:メソッドの最初のパラメータは、メソッドが呼び出されるインスタンスです。これにより、メソッドは関数と完全に同じになり、実際に使用する名前はあなた次第となります(ただし 自己 が慣例で、それ以外を使うと一般に顰蹙を買うことになります)。 自己 は、コード上では特別なものではなく、単なる別のオブジェクトです。

Rubyのような特別な構文や、C++やJavaのような宣言を必要とするもの、あるいはもっと違うものなど、Pythonは通常の名前と属性を区別するために何か他のことをすることができましたが、そうしなかったのです。Pythonは物事を明示的にすること、何が何であるかを明白にすることに全力を尽くし、完全にどこでもそうするわけではありませんが、インスタンスの属性についてはそうしています。そのため、インスタンス属性に代入する場合、どのインスタンスに代入するのかを知る必要があり、そのため、インスタンス属性に代入するために 自己 ..

について this を、Oracleが解説しています(以下、ソース。 Java この説明 ):

インスタンスメソッドまたはコンストラクタ内。 これ は、現在のオブジェクト、つまりメソッドやコンストラクタが呼び出されているオブジェクトへの参照です。インスタンスメソッドやコンストラクタの内部から現在のオブジェクトの任意のメンバーを参照するには これ . を使用する最も一般的な理由は この キーワードは、フィールドがメソッドやコンストラクタのパラメータによってシャドウされるからです。