0

私は次のコードを見てきましたが、プログラマーが__wasActiveをgetterメソッドでプライベートフィールドにした理由を誰かが明確にできるかどうか疑問に思っていますか?これは、このファイルの外部にコードを書き込むときに、プログラマーがメソッド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ため、作成者は、他の誰かがクラスの状態を「台無しにする」ことを心配することなく、よく眠ることができます。おそらく、他の何かが変更されたときに、そのフィールドの値が更新されます。しかし、あなたが提供していないように見える関連するコードスニペットを見なければ、これはわかりません。ただし、ゲッターは「他の人」にいつでも無料でその値を読み取らせるためにあります。

于 2012-07-28T03:08:31.647 に答える