У меня есть класс, который отслеживает его экземпляры в переменной класса, примерно так:
class Foo:
by_id = {}
def __init__(self, id):
self.id = id
self.by_id[id] = self
То, что я хотел бы сделать, это перебрать существующие экземпляры класса. Я могу сделать это с помощью:
for foo in Foo.by_id.values():
foo.do_something()
но он выглядел бы так аккуратно:
for foo in Foo:
foo.do_something()
Это возможно? Я попытался определить classmethod __iter__
, но это не сработало.