fork download
  1. class IterPerson(type):
  2. def __new__ (cls, name, bases, dct):
  3. dct['_instances'] = []
  4. return super().__new__(cls, name, bases, dct)
  5.  
  6. def __call__(cls, *args, **kwargs):
  7. instance = super().__call__(*args, **kwargs)
  8. cls._instances.append(instance)
  9. return instance
  10.  
  11. def __iter__(cls):
  12. return iter(cls._instances)
  13.  
  14.  
  15. class Person(metaclass=IterPerson):
  16. def __init__(self, name, age, height):
  17. self.name = name
  18. self.age = age
  19. self.height = height
  20.  
  21.  
  22. if __name__ == '__main__':
  23. Jeff = Person("Jeff", 20, "1.6")
  24. Bob = Person("Bob", 39, "1.4")
  25. Helen = Person("Helen", 19, "1.3")
  26.  
  27. for person in Person:
  28. print(person.name, "is", person.age)
Success #stdin #stdout 0.03s 27632KB
stdin
Standard input is empty
stdout
Jeff is 20
Bob is 39
Helen is 19