Используйте __iter__
с итератором-генератором.Например,
def __iter__(self):
for r in rooms:
yield r
Итератор-генератор - это в основном псевдо-метод, используемый для реализации итератора.Обратите внимание, что не требуется, чтобы генератор использовал цикл for.Он может использовать любую комбинацию конструкций (если, для, в то время и т. Д.) По мере необходимости.По сути, вы просто должны помнить, что вызывающая сторона получит элементы в том порядке, в котором вы «вызываете» yield, и итерация закончится, когда метод сделает это.
См. этот раздел Pythonучебник.