Python類のselfはいったい何をしているのか

1484 ワード

Python類のselfはいったい何をしているのか
Pythonがクラスを記述するとき、各関数パラメータの最初のパラメータはselfで、最初は何をしているのかにかかわらず、書かなければならないことしか知らなかった.その後Pythonに少し慣れてきて、selfの概念を振り返ってみると、少し分かったようです.
まずselfはクラスのメソッドにのみ存在し,独立した関数やメソッドはselfを持つ必要はないことを明らかにした.selfは、呼び出し時に対応するパラメータを入力する必要はありませんが、クラスのメソッドを定義する際に必要です.
self名は必須ではありません.pythonではselfはキーワードではありません.aやbなどの名前で定義することができますが、約束は俗っぽく(他のプログラミング言語と統一し、理解の難しさを減らすため)、他のことをしないでください.みんなは分かりません.
次の例ではselfをmynameに変更してもエラーはありません.
class Person:
    def _init_(myname,name):
        myname.name=name
    def sayhello(myname):
        print 'My name is:',myname.name
p=Person('Bill')
print p

selfとは、クラスインスタンスオブジェクト自体を指します(注意:クラス自体ではありません).
class Person:
    def _init_(self,name):
        self.name=name
    def sayhello(self):
        print 'My name is:',self.name
p=Person('Bill')
print p

上記の例では、selfはPersonの例pを指す.なぜクラス自体を指すのではないのか、次の例を示します.
class Person:
    def _init_(self,name):
        self.name=name
    def sayhello(self):
        print 'My name is:',self.name
p1=Person('Bill')
p2 = Person('Apple')
print p1

selfがクラス自体を指す場合、複数のインスタンスオブジェクトがある場合、selfはどれを指すのでしょうか.
まとめ
selfは定義時に定義する必要がありますが、呼び出し時に自動的に入力されます.
selfの名前は决まっているわけではありませんが、约束通りにselfを使ったほうがいいです.
selfは、呼び出し時のクラスのインスタンスを常に指します.
転載先:https://www.cnblogs.com/chownjy/p/8663024.html