Phillip J. Eby wrote: > At 09:13 AM 5/1/2007 -0700, Talin wrote: >> Phillip J. Eby wrote: >>> Proceeding to the "Next" Method >>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >>> If the first parameter of an overloaded function is named >>> ``__proceed__``, it will be passed a callable representing the next >>> most-specific method. For example, this code:: >>> def foo(bar:object, baz:object): >>> print "got objects!" >>> @overload >>> def foo(__proceed__, bar:int, baz:int): >>> print "got integers!" >>> return __proceed__(bar, baz) >> >> I don't care for the idea of testing against a specially named >> argument. Why couldn't you just have a different decorator, such as >> "overload_chained" which triggers this behavior? > > The PEP lists *five* built-in decorators, all of which support this > behavior:: > > @overload, @when, @before, @after, @around > > And in addition, it demonstrates how to create *new* method combination > decorators, that *also* support this behavior (e.g. '@discount'). > > All in all, there are an unbounded number of possible decorators that > would require chained and non-chained variations.
Well, I suppose you could make "chained" a modifier of the decorator, so for example @operator.chained, @discount.chained, and so on. In other words, the decorator can be called directly, or the attribute 'chained' also produces a callable that causes the modified behavior. Moreover, this would support an arbitrary number of modifiers on the decorator, such as @overload.chained.strict(True).whatever. -- Talin _______________________________________________ Python-3000 mailing list [email protected] http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com
