text: On 10/19/05, Paul Moore <p.f.moore at gmail.com> wrote: > > 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. > <name> would be a string and <dict-of-definitions> a dictionary. As I said, the semantic would be exactly the same as the current way of doing it: class <name> <args>: __metaclass__ = <callable> I am just advocating for syntactic sugar, the functionality is already there. Michele Simionato