> Sorry about that. I want something like: > > class foo: > > def __init__(self): > > self.attr1 = None > > > def get_attr1(self): > > if not self.attr1: > > attr1 = <get value from DB, very expensive query> > > self.attr1 = attr1 > > return self.attr1 > > > such that: > > foo_instance = foo() > > then: > > foo_instance.get_attr1() > > and > > foo_instance.attr1 > > gets the same value. > > Such that you get to derive attr1 only as needed and just once, both > outside > and within foo class. > > Or is it a bad idea or just plain ugly to do something like that? If it > is, > kindly suggest better approach. > > Thanks.
It's a little ugly but not too bad. What you are describing are properties. class Foo: def _get_attr1(self): if not self.attr1: attr1 = TheValue return attr1 def _set_attr1(self, value): self.attr1 = value ChangeDBFunction(value) attr1 = property(self._get_attr1,self._setattr1,None,None) I think that will work. The docs seem to suggest that you should subclass `object`. JS _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor