2011-01-28 38 views
0

在Python中有方法來聲明def的沒有放在課堂上。所以,如果我只需要很多def的存儲分隔的類,我應該簡單的做到這一點:排列定義

def first_method(): 
    pass 

def second_method(): 
    pass 

,並且不使用@classmethod@staticmethod

class methods(): 

    @classmethod 
    def first_method(cls): 
     pass 

    @staticmethod 
    def second_method(): 
     pass 

如果第一種方法是正確的,我應該如何標記私人和公共方法?

回答

3

是的。只要將不是實例方法的函數放在類中。

你在想Java,你會想。 Python不是Java。 Python沒有真正的方法來使用公共和私有方法 - 您可以更改名稱以表明您想要某種形式的隱私(名稱的開頭爲___),但它不可執行。

我發現在我用Python編程的所有時間中,我從不希望訪問修飾符。

+0

良好的答案,只有一個抱怨:​​領先的`__`(name mangling)最多是無用的,最壞的是有害的(不明顯的NameErrors)。 – delnan 2011-01-28 17:45:32

3

Python中沒有私有和公有方法。按照慣例,以單個下劃線開頭的名稱被認爲是「私人」的,因爲用戶不應該依賴它們的存在。此外,您可以文檔公共界面。所有其他應該沒有關係。

我會說,輕度相關函數的集合將是一個更pythonic的解決方案。