Over on comp.python.education we were discussing a (generally seen as)
misuse of decorators to build the definite integral of a function.
On thinking over the definite integral decorator, I had almost
decided that one necessary, but not sufficient, criterion for a
good decorator is that it must not change a function's arg list.
I was happy with this until just now.

I've been fighting wxPython a lot recently, and suddenly a good
working definition for a decorator came to me:

*  A decorator mediates between a function and its environment.

In particular, I thought about something like:

    @mousexy
    def OnRightClick(self, x, y):
        ...

For those non-wx'ers, all GUI events come wrapped in an "event",
so all event-responding methods tend to look like:

    def OnRightClick(self, event):
        x = event.GetX()
        y = event.GetY()

which looks like boilerplate to me.  I'm wondering whether others
think this is an interesting insight into what decorators are "for,"
or they think I'm working on "the moral equivalent of a macro."

--Scott David Daniels
[EMAIL PROTECTED]
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to