Postpone creation of attributes until needed
frank at chagford.com
Tue Jun 12 07:35:46 CEST 2007
On Jun 12, 1:46 am, Steven D'Aprano
<s... at REMOVE.THIS.cybersource.com.au> wrote:
> >> You haven't told us what the 'compute' method is.
> >> Or if you have, I missed it.
> > Sorry - I made it more explicit above. It is the method that sets up
> > all the missing attributes. No matter which attribute is referenced
> > first, 'compute' sets up all of them, so they are all available for
> > any future reference.
> If you're going to do that, why not call compute() from your __init__ code
> so that initializing an instance sets up all the attributes?
Because, as I have tried to explain elsewhere (probably not very
clearly), not all the information required to perform compute() is
available at __init__ time.
I have gained a lot of valuable advice from this thread, but I do have
a final question.
Every respondent has tried to nudge me away from __getattr__() and
towards property(), but no-one has explained why. What is the downside
of my approach? And if this is not a good case for using
__getattr__(), what is? What kind of situation is it intended to
More information about the Python-list