Derek said:
Does Python have something similar to Tcl style tracing? That is, the
ability to call a subroutine when a variable is written to or read from?
Would it be sufficient to keep track of attribute changes? Then you could
try something like
class TraceChanges(object):
def __init__(self, name, onChange):
# bypass the tracking mechanism
object.__setattr__(self, "name", name)
object.__setattr__(self, "changed", onChange)
def __setattr__(self, name, value):
object.__setattr__(self, name, value)
self.changed(self, name, value)
def changed(sender, name, value):
# could also be a method of TraceChanges
print "%s.%s changed to %s --> updating canvas" % (sender.name, name,
value)
rectangle = TraceChanges("rectangle", changed)
rectangle.color = "blue"
text = TraceChanges("text", changed)
text.color = "red"
text.font = "Helvetica"
Peter