> 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 - [email protected]
http://mail.python.org/mailman/listinfo/tutor