On 5 Jun 2012, at 08:53, Nick Coghlan wrote: > [snip...] > > Now, one minor annoyance with current class decorators is that they're > *not* inherited. This is sometimes what you want, but sometimes you > would prefer to automatically decorate all subclasses as well. > Currently, that means writing a custom metaclass to automatically > apply the decorators. This has all the problems you have noted with > composability. > > It seems then, that a potentially clean solution may be found by > adding a *dynamic* class decoration hook. As a quick sketch of such a > scheme, add the following step to the class creation process (between > the current class creation process, but before the execution of > lexical decorators): > > for mro_cls in cls.mro(): > decorators = mro_cls.__dict__.get("__decorators__", ()) > for deco in reversed(decorators): > cls = deco(cls) > > Would such a dynamic class decoration hook meet your use case? Such a > hook has use cases (specifically involving decorator inheritance) that > *don't* require the use of sys._getframes(), so is far more likely to > achieve the necessary level of consensus. > > As a specific example, the unittest module could use it to provide > test parameterisation without needing a custom metaclass.
Heh, you're effectively restoring the old Python 2 metaclass machinery with a slightly-less-esoteric mechanism. That aside I really like it. Michael -- http://www.voidspace.org.uk/ May you do good and not evil May you find forgiveness for yourself and forgive others May you share freely, never taking more than you give. -- the sqlite blessing http://www.sqlite.org/different.html _______________________________________________ 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