Continually check object status
Diez B. Roggisch
deets at nospam.web.de
Sat Aug 2 13:05:53 EDT 2008
futileissue at gmail.com schrieb:
> Beginner, so please bare with me. I'm not sure what to call what it
> is I'm looking for.
>
> If I have an object class, let's call it "Creature":
>
> class Creature:
> def __init__(self, status):
> self.status = "happy"
>
> def change_status(self, new_status):
> self.status = new_status
>
> def print_status(self):
> print self.status
>
> I would like to be able to print out the Creature's status every 20
> seconds. Let's say I use a script like this:
>
> import time
> while True:
> time.sleep(20)
> Creature.print_status()
>
> But, while cycling through printing the status, I would like to be
> able to update Creature.status to something new.
>
> I might be approaching this from the wrong direction entirely. Thanks
> for your input.
The "simple", yet possibly dangerous answer is: you need
multi-threading. Multi-threading is a technique that allows several
(quasi)-parallel paths of execution whilst sharing memory and objects
inside that memory. The module in python to achieve this is called
"threading".
However, concurrent programming is a very advanced topic, ridded with
pitfalls for even experienced developers.
There are other ways to solve the problem, commonly known as event-loops
and timers. These are usually part of frameworks for e.g GUI-creation an
such, but you can also roll your own if you like.
So, the better answer might be a question: what do you ultimately want
to achieve? Given the name of your class, Creature, I assume you are
writing on some game or such. Depending on how you plan to do that, you
might have a framwork providing you with the needed tools/library calls
or whatever.
Diez
More information about the Python-list
mailing list