A newbie question about class

Quinn Dunkan quinn at hork.ugcs.caltech.edu
Sun Feb 10 03:14:28 CET 2002


On 9 Feb 2002 16:35:19 -0800, newgene <newgene at bigfoot.com> wrote:
>can not get the value of "a.y" like the former. Of course I can use a
>method to set the value of "a.y", but is there a machanism to get the
>"a.y" automatically whenever I change the value of "a.x"?

Yes.  Under python2.2, it's (relatively) easy:

>>> class A:
...     def __init__(self, x=42):
...         self.x = x
...     def get_y(self):
...         return self.x**2
...     y = property(get_y, doc="'y' is computed as 'x**2'")
... 
>>> a = A()
>>> a.y
1764
>>> a.x = 2
>>> a.y
4
>>> 


Under older pythons, it's a bit more tricky.  I'd recommend defining a
'get_y()' as above, and calling that instead of doing 'a.y'.  If you really
want 'a.y', then check the refman under 'customizing objects' or something for
__getattr__.



More information about the Python-list mailing list