我已经创建了一个迭代器。我试图通过配方成分迭代来检查纯素食者是否可以。无法将列表作为类属性
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
你为什么要调用它,为什么不迭代实例呢? –