When assigning attributes to objects, I often find that I have to change attributes that are dependent upon others, say, light and darkness. Here's an example:
class shade:
def __init__(self, light):
self.light=light
self.darkness=100-light
def __str__(self):
return (str(self.light) + ',' + str(self.darkness))
>>> shade1=shade(30,70)
>>> shade1.light
30
>>> shade1.darkness
70
Now, while that is cool and all, what I would like is the same process to occur, but within the same object if a change in one attribute occurs. If I reset the property of light, I want darkness to incr/decr accordingly. I can do this with a function if it works to change the property of light, returning the new value of light/darkness, but I'd like a way to do this if I change the property of light simply by re-assigning its value, without the use of functions. Like this:
>>> shade1.light=50
>>> shade1.light
50
>>> shade1.darkness
50