On Sun, Apr 03, 2011 at 08:55:25PM -0500, Ryan Strunk wrote: > I understand that python passes variables by value and not by reference
You understand wrongly. Python is neither pass-by-value nor pass-by-reference. I've written thousands of words on this topic before, so excuse me if I'm a little terse. Rather than write it all out again, I'll just point you at this post: http://mail.python.org/pipermail/tutor/2010-December/080505.html You might also like to read this: http://effbot.org/zone/call-by-object.htm > and > this has not been a problem up until now. Now that I am trying to design a > class which explicitly checks a specific variable, though, I can't fathom a > way to do it unless I pass a direct reference, and I'm not sure that can be > done. One standard way to do this is to have your statistic class have a player attribute, and then have it check the player.health attribute. class Statistic(object): # Check statistics of a player. def __init__(self, player): self.player = player def check_health(self): if self.player.health < 0: print "Bam, you're dead!" An alternative is to have the player object check its own health, calling some appropriate notification object. This could be a global variable, or an attribute of the player (that way each player could have their own notification user-interface). notifier = Notify(sound='on', health_bar='off') # whatever... class Player(object): def __init__(self): self.health = 100 def check_health(self): if self.health < 0: notifier.announce_dead(self) elif self.health < 10: notifer.announce_critical(self) else: notifier.announce_normal(self) Or any of many variations on these. -- Steven _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor