Counting the number of call of a function

Chris Angelico rosuav at gmail.com
Thu Sep 29 13:22:12 EDT 2011


On Fri, Sep 30, 2011 at 3:08 AM, Laurent Claessens <moky.math at gmail.com> wrote:
> class wraper(object):
>    def __init__(self,fun):
>        globals()[fun]=self.replacement
>    def replacement(*args):
>        print "I'm replaced"
>
> foo()
> X=wraper(foo)
> foo()
>
> I was hoping that globals()[foo] would be replaced by my X.replacement and
> thus the second call to foo() was expected to print "I'm replaced".

Actually, I've just realized what your problem might be. Try:
X = wraper("foo")

You're indexing globals() with the actual function object, but you
want to index it with the function _name_. I do think that the
decorator technique will be a lot cleaner, though.

ChrisA



More information about the Python-list mailing list