[解決済み] 自分」という言葉は何のためにあるのか?
質問
の目的は何ですか?
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.
.
関連
-
PythonによるLeNetネットワークモデルの学習と予測
-
python call matlab メソッドの詳細
-
[解決済み】お使いのCPUは、このTensorFlowバイナリが使用するようにコンパイルされていない命令をサポートしています。AVX AVX2
-
[解決済み] for'ループでインデックスにアクセスする?
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] どのような場合に '$this' よりも 'self' を使うべきですか?
-
[解決済み] Inversion of Controlとは?
-
[解決済み] インターフェースと抽象クラスの違いは何ですか?
-
[解決済み】if __name__ == "__main__": は何をするのでしょうか?
-
[解決済み】__str__と__repr__の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Pythonの非常に便利な2つのデコレーターを解説
-
PythonはWordの読み書きの変更操作を実装している
-
Pythonの学習とデータマイニングのために知っておくべきターミナルコマンドのトップ10
-
PyQt5はユーザーログインGUIインターフェースとログイン後のジャンプを実装しています。
-
PythonによるExcelファイルの一括操作の説明
-
PythonでECDSAを実装する方法 知っていますか?
-
[解決済み】RuntimeWarning: 割り算で無効な値が発生しました。
-
[解決済み】なぜ「LinAlgError: Grangercausalitytestsから「Singular matrix」と表示されるのはなぜですか?
-
[解決済み】IndexError: invalid index to scalar variableを修正する方法
-
[解決済み】ImportError: bs4という名前のモジュールがない(BeautifulSoup)