Nick Coghlan <[EMAIL PROTECTED]> wrote: > > Josiah Carlson wrote: > > You can get the same semantics with... > > > > class NAME(_(TYPE), ARGS): > > BLOCK > > > > And a suitably defined _. Remember, not every X line function should be > > made a builtin or syntax. > > And this would be an extremely fragile hack that is entirely dependent on the > murky rules regarding how Python chooses the metaclass for the newly created > class. Ensuring that the metaclass of the class returned by "_" was always > the > one chosen would be tricky at best and impossible at worst.
The rules for which metaclass is used is listed in the metaclass documentation. I personally never claimed it was perfect, and neither is this one... class NAME(_(TYPE, ARGS)): BLOCK But it does solve the problem without needing syntax (and fixes any possible metaclass order choices). > Even if it *could* be done, I'd never want to see a hack like that in > production code I had anything to do with. That's perfectly reasonable. > (I put the metaclass after the keyword, because, unlike a function decorator, > the metaclass is invoked *before* the class is created, and because you're > only allowed one explicit metaclass) Perhaps, but because the metaclass can return anything (in this case, it returns a property), being able to modify the object that is created may be desireable...at which point, we may as well get class decorators for the built-in chaining. - Josiah _______________________________________________ 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