Another newbie question
Scott Johnson
sjohnson at csnet.net
Wed Jan 26 21:50:34 EST 2000
I've read the tutorial and I don't get lambda.
----------
"Tim Peters" <tim_one at email.msn.com> wrote...
> [Interrupting Michael Hudson's fine advice to inject a nit]
>
> [Roey Katz]
> > this brings up another concern. Given
> > the following definition:
> >
> > class A:
> >
> > def __getattr__( self, name ):
> > return -1
> > def __setattr__( self, name, val ):
> > self.__dict__[ name ] = val
> >
> > I see that self.__dict__ must be a special variable
> > in that setting it somehow avoids a recursive call
> > to __setattr__()?
>
> [Michael]
> > Yup. Look in Objects/classobject.c around about line 580
> > if you want the gory details.
>
> While true, it doesn't apply to Roey's example: he's not setting __dict__.
> He's binding a key *of* self.__dict__; self.__dict__ itself is merely
> referenced. So Roey should really be wondering why the reference to
> self.__dict__ isn't invoking __getattr__ (&, of course, that's also due to
> special-case __dict__ magic, but in __getattr__'s implementation).
>
> I don't mean to be overly picky; it's just that the excruciating details are
> vital when mucking with __getattr__/__setattr__, and *any* small
> misconception about them will eventually bite hard.
>
> > ...
> > Bizarrely,
> >
> > filter(dest.append,src)
> >
> > is probably more memory efficient (the map form conses up a
> > list of return values, but as append always returns None -
> > which is false - filter `rejects' every element) - but if
> > you write code like this, you deserve to lose.
>
> Yes, pointing him to the most bizarre endcases of Python behavior will
> surely aid him in "resetting his brain" <wink>.
>
> Guido gave some excellent semi-exasperated advice (similar in spirit to
> parts of Michael's advice that I've snipped) many moons ago, when the whole
> newsgroup was temporarily filled with msgs of this character: he invited
> people to just *try* writing a Python program without using any __xxx__
> hooks. I expect some people were amazed at how much easier their lives got!
> If he were to get that exasperated again today, I bet he'd expand his
> invitation to include avoiding map, filter, reduce and lambda too.
>
> you're-not-ready-to-use-them-in-python-before-you're-
> happy-without-them-ly y'rs - tim
>
>
>
More information about the Python-list
mailing list