2017-01-08 6 views
-2

まあ、私はPythonの初心者です。selfthisのキーワードをPythonで使用することの違いを理解できません。 これは、パラメータとしてselfを使用するコードです:自分自身とこれをPythonで使う場合の違い

class restaurant(): 
     bankrupt = False 
     def open_branch(self): 
      if not self.bankrupt: 
       print("branch open") 
    x=restaurant() 
    print(x.bankrupt) 
    y=restaurant() 
    y.bankrupt=True 
    print(y.bankrupt) 

そして、これは、パラメータとしてthisを使用するコードです:

class restaurant(): 
    bankrupt = False 
    def open_branch(this): 
     if not this.bankrupt: 
      print("branch open") 
x=restaurant() 
print(x.bankrupt) 
y=restaurant() 
y.bankrupt=True 
print(y.bankrupt) 

これらの両方のアプローチは私に同じ出力を与えました。だから、thisが私たちの問題を解決したときに私たちがなぜselfを使うのか理解できません。多分selfの私の解釈は間違っています。私はインターネットのものをたくさん見ましたが、関連するものは何も見つかりませんでした。 誰でも問題を解決してください。

+1

最初の引数であれば、何でも構いません。 – Maroun

答えて

2

それはPython documentに記載されている:

多くの場合、メソッドの最初の引数がselfと呼ばれています。 これは何も慣習ではありません:selfという名前はPythonにとって特別な意味を全く持ちません。ただし、規約に従わないと、他のPythonプログラマーにとってコードが読みにくくなる可能性があります。また、そのような規約に基づいてクラスブラウザプログラムを作成することも考えられます。

1

名前selfを使用することは、(強力な)規則です。 定数であれば自由に名前を使用できます。 しかし、selfを使用することを強くお勧めします。

一般的に、Pythonは、好きなように自由に操作することができます。 一方、変数に名前を付ける方法(多くはPEP8を参照)のような多くの規則があります。 99%のケースでは、この慣習に従うことが最善です。しかし、あなたが1%の場合、あなたはそれを別の方法で行うことができます。私はselfという名前を使用していないケースは見たことがありません。

PEP8 recommendsselfの使用:

必ずインスタンスメソッドへの最初の引数にselfを使用しています。

関連する問題