On Tue, May 18, 2010 at 1:39 PM, Vincent Davis <vinc...@vincentdavis.net> wrote: > > Lets say I have > class foo(object): > def __init__(self, x, y): > self.x=x > self.y=y > def xplusy(self): > self.xy = x+y > inst = foo(1,2) > inst.xy # no value, but I what this to cause the calculation of inst.xy > I don't what to have self.xy calculated before it is called.
class Foo(object): def __init__(self, x, y): self.x = x self.y = y @property def xy(self): '''Will calculate x+y every time''' return self.x + self.y Or if Foo is immutable and you wish to cache x+y: class Foo(object): def __init__(self, x, y): self.x = x self.y = y self._xy = None @property def xy(self): if self._xy is None: self._xy = self.x + self.y return self._xy Suggested reading: http://docs.python.org/library/functions.html#property Cheers, Chris -- http://blog.rebertia.com -- http://mail.python.org/mailman/listinfo/python-list