2016-08-26 4 views
-2

私は今のところ個人的なPythonプロジェクトに取り組んでいます。ただし、多くのコードサンプルは次のようになります。クラスの使用とPythonのクラスを使用しないことの違いは何ですか

x = 0 
class foo(object): 
    def bar(self): 
     global x 
     x += 1 
     self.y = x 
if __name__ == '__main__': 
    newClass = foo() 
    newClass.bar() 
    print(newClass.y) 

ちょっとした例です。

x = 0 
y = 0 
def bar(): 
    global x 
    global y 
    x += 1 
    y = x 
bar() 
print(y) 

がクラスより迅速かつ効率的ですかそれは単に個人の好みの問題です: この上ということのいずれかの利点がありますか?私は、上記のクラスを使わずに使う傾向がありますが、代わりにクラスを使うべきですか?

+0

ドキュメントは役に立ちます:http://stackoverflow.com/documentation/python/419/classes#t=201608261803105160761 – xdola

+3

Pythonicの答えは意味を持ちます。クラスがあなたに与えるものを何も使用していない場合は、クラスを使用しないでください。クラスを使用してコードを理解しやすくするには、クラスを使用します。 – bravosierra99

+1

あなたは 'bar'の2つの"インスタンス "を作ることができないので、意味を持って比較できるかどうかは分かりません。 – Blender

答えて

2

違いは、デザイン、コードの使用方法、拡張方法、管理方法などです。

あなたの例は非常に短いので、クラスだけでなく関数も必要ありません。しかし、それはそのような短い例の成果物です。

例では、self.yは、作成するクラスfooのインスタンスごとに異なります。 yをグローバルに宣言すると、プログラム全体で1つしかありません。

例にこれを追加し、結果を理解しているかどうかを確認してください。

first = foo() 
second = foo() 

first.bar() 
print(first.y) 

first.bar() 
print(first.y) 

second.bar() 
print(first.y) 
print(second.y) 
0

一般に、小さなプログラムにクラスを使用する利点はありません。しかし、大きなプログラムにはクラスを使用することに大きな利点があり、小さなプログラムは大きなプログラムを書く練習と考えるべきです。

関連する問題