我創建了一個只包含位置和狀態數據的類(項目)(數字表示項目的唯一枚舉,狀態可以是0,1)。創建自定義集合
class item:
def __init__(self, number, state):
self.number = number
self.state = state
def __repr__(self):
return('item(%s,%s)'%(self.position,self.state))
我試圖創建一個容器/收集的物品,隨機子集,其中有他們的狀態設置爲1,這個我目前使用:
from random import randint
N = 1024
num_defectives = 10
list_of_items = [item(i,0) for i in range(0,N)]
for i in range(0, num_defectives):
r = randint(0,N)
list_of_items[r].state = 1
但我想把它包裝成不是原始列表的東西(因爲我不認爲這是特別好的,而是掛在我的代碼上),但它跟蹤了項目狀態的總和。
理想情況下,它也會有狀態爲1的項目位置的不可訪問列表(我只能查詢狀態的總和,或者是否包含這些項目的狀態爲1的子項) 。
目前我選擇這個列表中隨機成員和測試國家的總和,像這樣:
items_to_test = [randint(0,n) for i in range(0,groupSize)]
group = []
for item in items_to_test:
group.append(inList[item])
states = sum([x.state for x in group])
if states:
#do some stuff to find an item with state 1, remove it from list_of_items
else:
#remove all the items in group from list_of_items
基本上,我正在尋找一個更清潔的方式通過做這一切的行爲採集。
我看過了這個問題的答案:
How to subclass Python list without type problems?
這個問題:
What to consider before subclassing list?
和閱讀:
http://docs.python.org/2/reference/datamodel.html#emulating-container-types
,但我仍然不確定從哪裏開始(除了子類對象),因爲我很不熟悉python提供的所有'魔術'函數。