簡體   English   中英

用於list和+ =運算符的python getter和setter方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM