By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
464,362 Members | 1,373 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 464,362 IT Pros & Developers. It's quick & easy.

Continually check object status

P: n/a
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.
Aug 2 '08 #1
Share this Question
Share on Google+
5 Replies

P: n/a
fu*********@gmail.com wrote:
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.
To answer your question, we need to know from where you would derive the
directions to change the status. For instance:
* time based (random or periodically scheduled)
* user mouse/keyboard action
* some state external to the program (file content, socket data, phase
of the moon, price of tea in China, ...)

Each of those possibilities would require a substantially different
approach.

Gary Herron
I might be approaching this from the wrong direction entirely. Thanks
for your input.
--
http://mail.python.org/mailman/listinfo/python-list
Aug 2 '08 #2

P: n/a
fu*********@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
Aug 2 '08 #3

P: n/a
On Aug 2, 12:58*pm, Gary Herron <gher...@islandtraining.comwrote:
futileis...@gmail.com wrote:
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.

To answer your question, we need to know from where you would derive the
directions to change the status. *For instance:
* * time based (random or periodically scheduled)
* * user mouse/keyboard action
* * some state external to the program (file content, socket data, phase
of the moon, price of tea in China, ...)

Each of those possibilities would require a substantially different
approach.

Gary Herron
I might be approaching this from the wrong direction entirely. *Thanks
for your input.
--
http://mail.python.org/mailman/listinfo/python-list

I was thinking about it taking directions from a GTK event handler,
such as a user selecting a button.
Aug 2 '08 #4

P: n/a
On Aug 2, 1:05*pm, "Diez B. Roggisch" <de...@nospam.web.dewrote:
futileis...@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
I was afraid that someone was going to mention threading. I have read
about it before but not been able to do much with it.

My ultimate goal is to create some sort of tamagotchi style virtual
pet to interact with. Over time it gets hungry or bored, but the
process can be fixed by a user "feeding" or "playing with" it. I
wanted to take this opportunity to teach myself some PyGTK coding as
well, but I thought that maybe I could build the creature object and
looping in such a way that it would be possible to add a GUI to it
later.
Aug 2 '08 #5

P: n/a
I was afraid that someone was going to mention threading. I have read
about it before but not been able to do much with it.

My ultimate goal is to create some sort of tamagotchi style virtual
pet to interact with. Over time it gets hungry or bored, but the
process can be fixed by a user "feeding" or "playing with" it. I
wanted to take this opportunity to teach myself some PyGTK coding as
well, but I thought that maybe I could build the creature object and
looping in such a way that it would be possible to add a GUI to it
later.
No, that's not possible. But when you use GTK, there are timer-functions
that let you register a timer event which will then invoke a callback in
which you can check whatever status you like.

Diez
Aug 2 '08 #6

This discussion thread is closed

Replies have been disabled for this discussion.