#誰もがオブジェクト指向 Python を学ぶと、必ず「自己」という理解が難しい存在に遭遇します。
この self は誰ですか?なぜすべてのクラス インスタンス メソッドには self パラメーターがあるのですか?それはどのような役割を果たしますか?
「最初に結論を出しましょう。クラスがインスタンス化された後、self はインスタンス (オブジェクト) 自体を表します。"
self を理解する最も簡単な方法は、self を「インスタンス (オブジェクト) の ID カード」と考えることです。
Python クラスではそれはできません。直接使用できます。インスタンス (オブジェクト) を作成することによってのみ機能します。各インスタンス (オブジェクト) は一意であり、クラスのメソッドとプロパティを呼び出すことができます。クラスは魂の憑依のようなもので、インスタンス(オブジェクト)に独自の(自己)機能を持たせることができます。
初心者は、クラス メソッド (コンストラクター メソッドとインスタンス メソッド) に固定パラメーター self があることに気づくでしょう。実際、このパラメーターはインスタンス (オブジェクト) 自体を表します。 ID カードと同様に、インスタンスは ID カードを使用してクラス メソッドを呼び出すことができます。
人間に例えると、人間は Python クラスであり、各個人はインスタンス (オブジェクト) を表し、各個人の ID カードは Python で自己を表します。 ID カードを使用して大学に行ったり、高速鉄道に乗ったり、ホテルに滞在したりすることができます... (メソッド)、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 サイトの他の関連記事を参照してください。