Python の Self について話しましょう。それは誰ですか?

王林
リリース: 2023-05-15 08:01:05
転載
961 人が閲覧しました

Python の Self について話しましょう。それは誰ですか?

#誰もがオブジェクト指向 Python を学ぶと、必ず「自己」という理解が難しい存在に遭遇します。

この self は誰ですか?なぜすべてのクラス インスタンス メソッドには self パラメーターがあるのですか?それはどのような役割を果たしますか?

「最初に結論を出しましょう。クラスがインスタンス化された後、self はインスタンス (オブジェクト) 自体を表します。"

self を理解する最も簡単な方法は、self を「インスタンス (オブジェクト) の ID カード」と考えることです。

Python クラスではそれはできません。直接使用できます。インスタンス (オブジェクト) を作成することによってのみ機能します。各インスタンス (オブジェクト) は一意であり、クラスのメソッドとプロパティを呼び出すことができます。クラスは魂の憑依のようなもので、インスタンス(オブジェクト)に独自の(自己)機能を持たせることができます。

Python の Self について話しましょう。それは誰ですか?

初心者は、クラス メソッド (コンストラクター メソッドとインスタンス メソッド) に固定パラメーター self があることに気づくでしょう。実際、このパラメーターはインスタンス (オブジェクト) 自体を表します。 ID カードと同様に、インスタンスは ID カードを使用してクラス メソッドを呼び出すことができます。

Python の Self について話しましょう。それは誰ですか?

人間に例えると、人間は Python クラスであり、各個人はインスタンス (オブジェクト) を表し、各個人の ID カードは Python で自己を表します。 ID カードを使用して大学に行ったり、高速鉄道に乗ったり、ホテルに滞在したりすることができます... (メソッド)、Python のインスタンス (オブジェクト) は self を使用してクラス メソッドを呼び出すこともできます。

Python の Self について話しましょう。それは誰ですか?

上記では、self の意味を例えで説明しています。最終的には、self はインスタンスそのものを表します。「インスタンス (オブジェクト) がクラス メソッドを呼び出すとき、オブジェクトは自動的に自身の参照を最初のパラメータとしてメソッドに渡します。最初のパラメータは self です。」

そして self は従来の書き方にすぎず、self の代わりに他の名前を使用できます。コードの意味は変わりませんが、通常は変更しません。

self の役割をよりよく説明するために、例を見てみましょう。以下に Student クラスがあります:

class Students:
# 构造方法
def __init__(self,name):
self.name = name
# 实例方法
def study(self,examination_results):
self.examination_results = examination_results
print("同学{}的考试分数是{}".format(self.name,self.examination_results))
print("该实例对象的地址是{}".format(self))
ログイン後にコピー

まず、student_a の例を見てみましょう。

studend_a = Students('studend_a')
print(studend_a.name)
ログイン後にコピー

結果が出力されます:student_a。

別の例、student_b を見てみましょう。

studend_b = Students('studend_b')
print(studend_b.name)
ログイン後にコピー

結果が出力されます:student_b。

インスタンス(オブジェクト)が異なり、出力結果も異なることがわかりますが、クラスをインスタンス化すると、実際にはself.nameとインスタンス(オブジェクト).nameが同じになります。

先ほどのコードを例として、内部でインスタンス メソッドを呼び出すと、self が出力されるので、よりわかりやすくなります。

インスタンスstudent_a:

studend_a = Students('studend_a')
print(studend_a.study(80))
ログイン後にコピー

出力結果:

学生student_aのテストスコアは80です。このインスタンスオブジェクトのアドレスは

です。 <「main」.Students object at 0x00000129EB0F6A90>

インスタンス Student_b:

studend_b = Students('studend_b')
print(studend_b.study(80))
ログイン後にコピー

出力結果:

学生 Student_b の試験のスコアは 80 です。このインスタンス オブジェクトのアドレスは

です。 <「main」.Students object at 0x00000129EB0F6B38>

self はインスタンス (オブジェクト) 自体を表すため、2 つのインスタンスによって出力される self が異なることが明確にわかります。

インスタンス Student_b を例として、self を出力すると、次のオブジェクト情報が表示されます。

。 <__main__.Students object at 0x00000129EB0F6B38>

student_b を再度印刷すると、同じ結果が表示されます。

print(student_b)
ログイン後にコピー

出力:

。 <__main__.students object at>

クラスがインスタンス化された後、self がインスタンス (オブジェクト) 自体を表すことは、この時点で明らかです。

以上がPython の Self について話しましょう。それは誰ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:51cto.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート