Python類のselfはいったい何をしているのか
1484 ワード
Python類のselfはいったい何をしているのか
Pythonがクラスを記述するとき、各関数パラメータの最初のパラメータはselfで、最初は何をしているのかにかかわらず、書かなければならないことしか知らなかった.その後Pythonに少し慣れてきて、selfの概念を振り返ってみると、少し分かったようです.
まずselfはクラスのメソッドにのみ存在し,独立した関数やメソッドはselfを持つ必要はないことを明らかにした.selfは、呼び出し時に対応するパラメータを入力する必要はありませんが、クラスのメソッドを定義する際に必要です.
self名は必須ではありません.pythonではselfはキーワードではありません.aやbなどの名前で定義することができますが、約束は俗っぽく(他のプログラミング言語と統一し、理解の難しさを減らすため)、他のことをしないでください.みんなは分かりません.
次の例ではselfをmynameに変更してもエラーはありません.
selfとは、クラスインスタンスオブジェクト自体を指します(注意:クラス自体ではありません).
上記の例では、selfは
selfがクラス自体を指す場合、複数のインスタンスオブジェクトがある場合、selfはどれを指すのでしょうか.
まとめ
selfは定義時に定義する必要がありますが、呼び出し時に自動的に入力されます.
selfの名前は决まっているわけではありませんが、约束通りにselfを使ったほうがいいです.
selfは、呼び出し時のクラスのインスタンスを常に指します.
転載先:https://www.cnblogs.com/chownjy/p/8663024.html
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