![](/img/trans.png)
[英]How to write getter-setter methods for a private attribute in python class?
[英]python getter and setter methods for list and += operator
我正在建立一個包含字典的類,該字典包含幾個列表以及其他變量。 我希望使用該類的人能夠將項目添加到列表中,但是我想通過一個setter方法來確保自己添加到列表中的值是有效的。 getter方法為用戶提供了更多便利,因此不必為了獲取某個值而鍵入variable.dictionary ['value'] ['subvalue'] ['第三嵌套物']。
我有一些有效的方法,但是使用equals運算符時會調用setter方法。 我想知道調用+ =時是否可以調用setter方法,因為用戶將添加到列表中。 這似乎更自然。
這是到目前為止我所做的一些偽代碼
def addItemtoList(self,inValue):
if inValue in listOfAcceptableValues:
self.really['long']['nested']['dictionaries']['array'] = list( set( self.really['long']['nested']['dictionaries']['array'] + [inValue] ) )
def getDeeplyNestedList(self):
return self.really['long']['nested']['dictionaries']['array']
thatList = property(getDeeplyNestedList, addItemtoList)
創建一個臨時集僅用於一次一次性會員資格測試並沒有多大意義。 可能只是線性搜索list
def addItemtoList(self,inValue):
L = self.really['long']['nested']['dictionaries']['array']
if inValue in listOfAcceptableValues and inValue not in L:
L.append(inValue)
當有人嘗試使用
foo.thatList += ['Some', 'items']
list.extend
方法在列表上被調用,因此addItemtoList
完全不涉及。 為了實現您想要的,您將需要thatList
返回列表的包裝版本。 合成或子類化都可以
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.