On 10/19/05, Michele Simionato <[EMAIL PROTECTED]> wrote: > On 10/18/05, Guido van Rossum <[EMAIL PROTECTED]> wrote: > > I wonder if at some point in the future Python will have to develop a > > macro syntax so that you can write > > > > Property foo: > > def get(self): return self._foo > > ...etc... > > This reminds me of an idea I have kept in my drawer for a couple of years or > so. > Here is my proposition: we could have the statement syntax > > <callable> <name> <tuple>: > <definitions> > > to be syntactic sugar for > > <name> = <callable>(<name>, <tuple>, <dict-of-definitions>)
Cor. That looks like very neat/scary stuff. I'm not sure if I feel that that is a good thing or a bad thing :-) One question - in the expansion, "name" is used on both sides of the assignment. Consider something name(): <definitions> This expands to name = something(name, (), <dict>) What should happen if name wasn't defined before? A literal translation will result in a NameError. Maybe an expansion name = something('name', (), <dict>) would be better (ie, the callable gets the *name* of the target as an argument, rather than the old value). Also, the <definitions> bit needs some clarification. I'm guessing that it would be a suite, executed in a new, empty namespace, and the <dict-of-definitions> is the resulting modified namespace (with __builtins__ removed?) In other words, take <definitions>, and do d = {} exec <definitions> in d del d['__builtins__'] then <dict-of-definitions> is the resulting value of d. Interesting idea... Paul. _______________________________________________ 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