Возможно, я делаю это неправильно, если да, дайте мне знать, но мне любопытно, возможно ли следующее:
У меня есть класс, который содержит несколько словарей, каждый из которых объединяет имена в разные наборы объектов данного класса. Например:
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
Хотя я чувствую, что это будет полезно в коде, который я имею, я не знаю, возможно ли это или правильный подход. Все, что я читал о пользовательских итераторах, говорит о том, что каждый их экземпляр предназначен только для одного использования.