Newbie question on Classes

2008-01-10 Thread Adrian Wood
Hi al! I'm new to the list, and reasonably new to Python, so be gentle.

Long story short, I'm having a hard time finding a way to call a
function on every object of a class at once. Example:

I have a class Person, which has a function state(). This prints a
basic string about the Person (position, for example). In the program,
I have created two objects of class Person, called man and woman.

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.

I'd appreciate anyone who could help, especially if they could include
a short sample. My apologies if I'm not following the etiquette of the
group in some way my making this request.

Thank you,
Adrian
-- 
http://mail.python.org/mailman/listinfo/python-list


Fwd: Python-list Digest, Vol 52, Issue 128

2008-01-10 Thread Adrian Wood
Fredrik Lundh 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()

It didn't like using .add for some reason, but once I swapped out all
instances of that for .append that worked a treat! Thank you very
much, I'll check out your other suggestions later once I feel
comfortable with what I have so far.
-- 
http://mail.python.org/mailman/listinfo/python-list