Bill Atkins wrote: [snip] > > Unfortunately, it's *nothing* like a full PyCell implementation. I > explained what Cells is above. It is not merely a spreadsheet - it is > an extension that allows the programmer to specify how the value of > some slot (Lisp lingo for "member variable") can be computed. It > frees the programmer from having to recompute slot values since Cells > can transparently update them. It has to do with extending the object > system, not with merely setting tables in a hash and then retrieving > them.
I have not looked at Cells at all, but what you are saying here sounds amazingly like Python's properties to me. You specify a function that calculates the value of an attribute (Python lingo for something like a "member variable"). Something like this: >>> class Temperature(object): ... def __init__(self, temperature_in_celsius): ... self.celsius = temperature_in_celsius ... def _get_fahrenheit(self): ... return self.celsius * 9.0 / 5.0 + 32 ... fahrenheit = property(_get_fahrenheit) ... >>> t = Temperature(0) >>> t.fahrenheit 32.0 >>> t.celsius = -32 >>> t.fahrenheit -25.600000000000001 >>> t = Temperature(100) >>> t.fahrenheit 212.0 no metaclass hacking necessary. Works also if you want to allow setting the property. Cheers, Carl Friedrich Bolz -- http://mail.python.org/mailman/listinfo/python-list