1. ホーム
  2. python

[解決済み] 自分」という言葉は何のためにあるのか?

2022-03-17 18:08:35

質問

の目的は何ですか? self という単語はPythonで使われていますか?そのクラスから生成される特定のオブジェクトを指すことは理解できますが、なぜすべての関数にパラメータとして明示的に追加する必要があるのかがわかりません。説明のために、Rubyではこんなことができます。

class myClass
    def myFunc(name)
        @name = name
    end
end

これは非常に簡単に理解できます。しかし、Pythonでは self :

class myClass:
    def myFunc(self, name):
        self.name = name

どなたか教えてください。私の(限られた)経験では遭遇したことのないことなのです。

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

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

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