Newbie again: computing attributes on the fly
Olaf Delgado
delgado at Mathematik.Uni-Bielefeld.DE
Wed Jun 16 13:58:44 EDT 1999
Hi and thanks for answering!
On Wed, 16 Jun 1999, Gordon McMillan wrote:
> Olaf Delgado writes:
> >
> > class x:
> > def __getattr__(self, attr):
> > import string
> > if string.find(attr, "get_") != 0:
> > val = ( lambda x = getattr(self, "get_"+attr)(): x )
> > self.__dict__[attr] = val
> > return val
> > else:
> > raise AttributeError("no such attribute")
> > [...]
> You're making things too complicated. __getattr__ is only called if
> the attribute is not found. So something like this will suffice:
> [...]
> If you want to generalize that, I'd see if we have an attribute
> "calc_%s" % nm and use that method (vs the inline computation).
Yes, I definitely want to generalize that. The problem is that that method
may be defined in a superclass, so "self.__dict__" won't find it. AFAIK
(which may be not be very far), I have to use "hasattr" and/or "getattr",
which in turn will call "__getattr__".
Recursively yours,
Olaf
--
//// Olaf Delgado Friedrichs, Uni Bielefeld, Mathematik
Olaf Postfach 100131 (room: V4-109)
`=' D-33501 Bielefeld, Germany (phone: +49 521 106-4765)
http://www.mathematik.uni-bielefeld.de/~delgado
More information about the Python-list
mailing list