On 10/19/05, Fredrik Lundh <[EMAIL PROTECTED]> wrote: > letting "class" inject a slightly magic "self" variable into the class > namespace ? > > class C: > > foo = property(self.getFoo, self.setFoo, None, 'the foo property') > > def getFoo(self): > return self._foo > > def setFoo(self, foo): > self._foo = foo > > (figuring out exactly what "self" should be is left as an exercise etc)
It's magical enough to deserve to be called __self__. But even so: I've seen proposals like this a few times in other contexts. I may even have endorsed the idea at one time. The goal is always the same: forcing delayed evaluation of a getattr operation without using either a string literal or a lambda. But I find it quite a bit too magical, for all values of xyzzy, that xyzzy.foo would return a function of one argument that, when called with an argument x, returns x.foo. Even if it's easy enough to write the solution (*), that sentence describing it gives me goosebumps. And the logical consequence, xyzzy.foo(x), which is an obfuscated way to write x.foo, makes me nervous. (*) Here's the solution: class XYZZY(object): def __getattr__(self, name): return lambda arg: getattr(arg, name) xyzzy = XYZZY() -- --Guido van Rossum (home page: http://www.python.org/~guido/) _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com