Mor*_*goZ 3 python properties getter-setter
我有一个像这样的python属性:
class Foo:
@property
def maxInputs(self):
return self._persistentMaxInputs.value
@maxInputs.setter
def maxInputs(self, value):
self._persistentMaxInputs.value = value
Run Code Online (Sandbox Code Playgroud)
目前,maxInputs每个人都可以获取和设置的值。
但是,我希望所有人都可以获取的值maxInputs,但只能在Foo类内部进行设置。
那么,有没有一种方法可以使用私有设置程序和公共获取程序声明属性?
Python 没有隐私模型。使用下划线只是一个约定,没有访问控制。如果您不希望“公共” API包含sett,则只需从您的班级中删除setter并self._persistentMaxInputs.value直接在您的班级代码中将其分配给。如果您想限制需要记住的位置数,可以将其设为函数:
def _setMaxInputs(self, value):
self._persistentMaxInputs.value = value
Run Code Online (Sandbox Code Playgroud)
您可以当然,作出这样一个独立的property对象,但你不得不放弃使用修饰语法:
def _maxInputs(self, value):
self._persistentMaxInputs.value = value
_maxInputs = property(None, _maxInputs)
Run Code Online (Sandbox Code Playgroud)
但现在至少您可以self._maxInputs = value在类代码中使用。但是,这实际上并没有提供太多的语法改进。
| 归档时间: |
|
| 查看次数: |
2733 次 |
| 最近记录: |