On Tue, Aug 11, 2009 at 9:27 PM, bob gailer<bgai...@gmail.com> wrote: > Kent Johnson wrote: >> >> On Tue, Aug 11, 2009 at 10:22 AM, bob gailer<bgai...@gmail.com> wrote: >> >> >>> >>> Decorator functions: >>> >>> def collect(func): >>> 'a "decorator" that adds each function to the cmds list' >>> cmds.append((func.__name__, func)) >>> >> >> Decorators must return a callable > > The docs indeed say that, but the interpreter does not enforce it. My > example works as I designed it.
I guess if you just want to populate cmds it is OK but if you want the name 'foo' to be bound to a function it fails: In [20]: cmds = [] In [21]: def collect(func): ....: cmds.append((func.__name__, func)) In [22]: @collect ....: def foo(a): ....: return 'foo' * a ....: In [23]: cmds Out[23]: [('foo', <function foo at 0x14a1770>)] In [24]: foo In [25]: foo(3) --------------------------------------------------------------------------- TypeError Traceback (most recent call last) /Users/kent/<ipython console> in <module>() TypeError: 'NoneType' object is not callable Kent _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor