我有一个类似python的属性:
class Foo:
@property
def maxInputs(self):
return self._persistentMaxInputs.value
@maxInputs.setter
def maxInputs(self, value):
self._persistentMaxInputs.value = value
目前,maxInputs
的值可以由每个人获取和设置。在
但是,我希望每个人都能获得maxInputs
的值,但它只能在Foo
类内部设置。在
那么有没有一种方法可以用私有setter和public getter声明属性?在
Python没有隐私模型。使用下划线只是惯例,没有访问控制。 如果不希望“public”API包含sett,那么只需从类中删除setter并直接在类代码中赋值给
self._persistentMaxInputs.value
。如果要限制需要记住这一点的位置数量,可以将其设为函数:当然,可以让它成为一个单独的
^{pr2}$property
对象,但之后您必须放弃decorator语法:但现在至少可以在类代码中使用
self._maxInputs = value
。然而,这并没有真正提供多少语法改进。在我使用两个属性来处理公共属性和私有setter。它确实创建了一些多余的代码,但我最终还是遵循了decorator的约定。参见以下示例:
相关问题 更多 >
编程相关推荐