2012-07-28 85 views
0

我一直在看下面的代碼,並想知道如果有人可以澄清爲什麼程序員使__wasActive私人領域與getter方法?這只是因爲當在這個文件之外編寫代碼時,程序員希望專用字段只能通過wasActive()方法訪問,而不能直接編寫,例如Cell.wasActive?謝謝!Python的私人領域與getter方法

class Cell(object): 

    def __init__(self, column, index): 
     self.segments = [] 
     self.column = column 
     self.index = index 
     self.isActive = False 
     self.__wasActive = False #Why private field? 
     self.isPredicting = False 
     self.__wasPredicted = False 
     self.isLearning = False 
     self.__wasLearning = False 

    @property 
    def wasActive(self): 
     return self.__wasActive 

    @property 
    def wasLearning(self): 
     return self.__wasLearning 

    @property 
    def wasPredicted(self): 
     return self.__wasPredicted 

回答

3

「私人」成員首先的原因總是(幾乎)encapsulation。在這種情況下,只有Cell類可以更新其__wasActive字段,因此作者可以睡得很好,而不用擔心別人會「弄亂」他的課程狀態。也許這個領域的價值在其他事物發生變化時得到更新。但是,如果不查看您似乎沒有提供的相關代碼片段,我們就不會知道這一點。然而,吸氣劑在那裏讓「其他人」在任何時候免費讀取該值。