Newbie question on Classes

Fredrik Lundh fredrik at pythonware.com
Thu Jan 10 16:54:16 EST 2008


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>




More information about the Python-list mailing list