2016-08-26 39 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」的「實例」,所以我不確定你是否可以有意義地比較它們。 – Blender

回答

2

不同之處在於您的設計,您的代碼如何使用,如何擴展以及如何管理它。

你的例子很短,你甚至不需要函數,更不用說類。但這是一個這樣一個簡短例子的人造物。

在您的示例中,self.y對於您創建的類foo的每個實例都會有所不同。當你聲明y是全球性的,那麼你的整個計劃中只有其中一個。

嘗試將此添加到您的示例中,看看您是否理解結果。

first = foo() 
second = foo() 

first.bar() 
print(first.y) 

first.bar() 
print(first.y) 

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

一般來說,對小程序使用類沒有任何優勢。然而,對於大型程序使用類有一個巨大的優勢,您應該將小型程序看作編寫大型程序的練習。

相關問題