我一直在查看以下代码,并且想知道是否有人可以澄清为什么程序员使用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
答案 0 :(得分:3)
首先,“私人”成员的原因总是(几乎)encapsulation。在这种情况下,只有Cell
类可以更新其__wasActive
字段,因此作者可以安然入睡而不必担心其他人可能“搞乱”他们班级的状态。也许当其他东西发生变化时,该字段的值会更新。但是,如果不查看您似乎没有提供的相关代码段,我们就不知道这一点。然而,吸气者在那里,让“其他人”随时免费阅读该值。