я мог бы делать это неправильно, если я, дайте мне знать, но мне интересно, если возможно следующее:Возможно ли создать итератор python над предопределенными изменяемыми данными?
У меня есть класс, который содержит ряд словарей, каждый из которых пар имен в другой набор объектов данного класса. Например:
items = {"ball" : ItemInstance1, "sword" : ItemInstance2}
people = {"Jerry" : PersonInstance1, "Bob" : PersonInstance2, "Jill" : PersonInstance3}
Мой класс будет тогда держать текущие предметы и людей, которые воевавших, и это будет изменяться по мере изменения состояний:
Class State:
def __init__(self, items, people):
self.items = items
self.people = people
Я хотел бы определить iter() и next(), так что он выполняет итерацию по всем значениям в своих атрибутах. Мой первый вопрос заключается в том, возможно ли это. Если да, то он будет в состоянии поддерживать ситуацию следующим образом:
Я определяю предметы и людей, как описано выше, а затем:
state = State(items, people)
for names, thing in state:
print name + " is " + thing.color
items[cheese] = ItemInstance3
for names, thing in state:
print name + " weighs " + thing.weight
В то время как я чувствую, что это было бы полезно в коде у меня есть, я не знаю, возможно ли это или правильный подход. Все, что я прочитал об итераторах, определенных пользователем, предположил, что каждый их экземпляр используется только один.