2017-02-09 157 views
0

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聲明一個屬性?

回答

2

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。然而,這並沒有提供很多語法改進。