Michael Hudson <mwh at python.net> writes: > Guido van Rossum <guido at python.org> writes: > >> So again, here we have a mechanism that's rather generic (lambda) >> which is frequently used in a few stylized patterns (to extract an >> attribute or field). So Raymond's new functions attrgetter and >> itemgetter (whose names I cannot seem to remember :-) take care of >> these. >> >> But, at least for attrgetter, I am slightly unhappy with the outcome, >> because the attribute name is now expressed as a string literal rather >> than using attribute notation. This makes it harder to write >> automated tools that check or optimize code. (For itemgetter it >> doesn't really matter, since the index is a literal either way.) >> >> So, while I'm not particularly keen on lambda, I'm not that keen on >> attrgetter either. But what could be better? All I can think of are >> slightly shorter but even more crippled forms of lambda; for example, >> we could invent a new keyword XXX so that the expression (XXX.foo) is >> equivalent to (lambda self: self.foo). This isn't very attractive. > > Doesn't have to be a keyword... I implemented something like this > years ago and then ditched it when list comps appeared. > > It would let you do things like > >>>> map(X + 1, range(2)) Something like this? class Adder: def __init__(self, number): self._number = number def __call__(self, arg): return arg + self._number class X: def __add__(self, number): return Adder(number) X = X() print map(X + 1, range(2)) > [1, 2, 3] > (Although the above only prints [1, 2] ;-)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4