0

我一直在查看以下代码,想知道是否有人可以澄清为什么程序员使用 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 
4

1 回答 1

3

首先,“私人”成员的原因总是(几乎)封装。在这种情况下,只有一个Cell类可以更新其__wasActive字段,因此作者可以睡得很好,而不必担心其他人会“弄乱”他的类的状态。当其他东西发生变化时,也许该字段的值会更新。但是,如果不查看您似乎没有提供的相关代码片段,我们就不知道这一点。但是,getter 可以让“其他人”随时免费读取该值。

于 2012-07-28T03:08:31.647 回答