On Tue, May 18, 2010 at 1:39 PM, Vincent Davis <[email protected]> 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