我已經創建了一個迭代器。我試圖通過配方成分迭代來檢查純素食者是否可以。無法將列表作爲類屬性
class Vegan:
NONE_VEGAN_INGREDIENT = ['egg', 'milk', 'honey', 'butter']
def __init__(self, *args):
self.ingredient_list = (args)
self.index = -1
def __iter__(self):
return self
def __next__(self):
if self.index == len(self.ingredient_list):
raise StopIteration
for ingredient in self.ingredient_list:
if ingredient in Vegan.NONE_VEGAN_INGREDIENT:
self.index += 1
return ('{} is a vegan ingredient'.format(ingredient[self.index]))
else:
self.index += 1
return ('{} is NOT a vegan ingredient'.format(ingredient[self.index]))
iterable = Vegan('tomato', 'banana', 'asd', 'egg', 'tomato')
iterator = iter(iterable)
while True:
try:
print(next(iterator))
except StopIteration:
break
,你可以看到,我路過*指定參數時,這應該是一個名單,但每當我嘗試運行此,它通過第一個字迭代,並檢查單詞「番茄」的信。我想讓我的迭代器遍歷所有的成分,如果某些東西不在NONE_VEGAN_INGREDIENT列表中,那麼就按原樣打印在代碼中。我怎樣才能通過一個列表?
不是簡單的'在素食V固定問題(..):打印(V)'相當於你的最後一行? – polku
你爲什麼要調用它,爲什麼不迭代實例呢? –