带有getter方法的python私有字段

时间:2012-07-28 03:02:51

标签: python oop design-patterns private-members

我一直在查看以下代码,并且想知道是否有人可以澄清为什么程序员使用getter方法将__wasActive设为私有字段?这只是因为当在这个文件之外编写代码时,程序员希望私有字段只能通过一个方法wasActive()访问,而不是直接通过编写例如Cell.wasActive来访问?谢谢!

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 

1 个答案:

答案 0 :(得分:3)

首先,“私人”成员的原因总是(几乎)encapsulation。在这种情况下,只有Cell类可以更新其__wasActive字段,因此作者可以安然入睡而不必担心其他人可能“搞乱”他们班级的状态。也许当其他东西发生变化时,该字段的值会更新。但是,如果不查看您似乎没有提供的相关代码段,我们就不知道这一点。然而,吸气者在那里,让“其他人”随时免费阅读该值。