公共getter和setter方法私人
问题描述:
Python的财产我有一个Python属性是这样的:公共getter和setter方法私人
class Foo:
@property
def maxInputs(self):
return self._persistentMaxInputs.value
@maxInputs.setter
def maxInputs(self, value):
self._persistentMaxInputs.value = value
目前,maxInputs
值可以得到受到大家的设定。
但是,我想让每个人都可以获得maxInputs
的值,但只能在Foo
类中设置。
那么有没有办法用private private setter和public getter声明一个属性?
答
Python有没有隐私模型。使用下划线只是一个约定,没有访问控制。 如果您不希望“公共”API包含设置,则只需从班级中移除设置器,然后直接在您的班级代码中指定self._persistentMaxInputs.value
。你可以把它的功能,如果你想限制需要记住这个位置数:
def _setMaxInputs(self, value):
self._persistentMaxInputs.value = value
您当然可以使之成为独立的property
对象,但你不得不放弃修饰语法:
def _maxInputs(self, value):
self._persistentMaxInputs.value = value
_maxInputs = property(None, _maxInputs)
但现在至少您可以在您的课程代码中使用self._maxInputs = value
。然而,这并没有提供很多语法改进。