您可以使用简单的元类使您的类对象可迭代。
class IterRegistry(type):
def __iter__(cls):
return iter(cls._registry)
class Person(object):
__Metaclass__ = IterRegistry
_registry = []
def __init__(self, name):
self._registry.append(self)
self.name = name
(我也进行了更改__registry
,_registry
以使其更容易从元类访问)。然后,
>>> p = Person('John')
>>> p2 = Person('Mary')
>>> for personobject in Person:
... print personobject
...
<person.Person object at 0x70410>
<person.Person object at 0x70250>