On Jan 10, 2008 4:54 PM, Fredrik Lundh <[EMAIL PROTECTED]> wrote: > Adrian Wood wrote: > > > I can call man.state() and then woman.state() or Person.state(man) and > > Person.state(woman) to print the status of each. This takes time and > > space however, and becomes unmanageable if we start talking about a > > large number of objects, and unworkable if there is an unknown number. > > What I'm after is a way to call the status of every instance of Man, > > without knowing their exact names or number. > > > > I've gone through the relevant parts of the online docs, tried to find > > information elsewhere online, and looked for code samples, but the > > ionformation either isn't there, or just isn't clicking with me. I've > > tried tracking the names of each object in a list, and even creating > > each object within a list, but don't seem to be able to find the right > > syntax to make it all work. > > For a start, how about: > > class Person: > ... your class ... > > persons = [] > > man = Person() > persons.add(man) > > woman = Person() > persons.add(woman) > > for p in persons: > print p, p.state() > > Once you've gotten this to work, you can, if you want, look into moving > the list maintenance into the class itself (i.e. let the __init__ > function add the person to the list, and provide a destroy method that > removes it from the list). And once you've gotten that to work, you can > look at the "weakref" module for more elegant ways to handle > destruction. But one step at a time... > > </F> > > -- <http://mail.python.org/mailman/listinfo/python-list> >
if you can keep all instances in a list, as Fredrik showed, it's easy. Otherwise you can do something like: class Person: people = [] def __init__(self, name): self.name = name Person.people.append(self) def print_state(self): print self.name some_folks = [Person('Bob'), Person('Mary')] other_guy = Person('Frank') for p in Person.people: p.print_state() This would keep the people from ever being garbage collected, but this may not be a problem for you.
-- http://mail.python.org/mailman/listinfo/python-list