Я на самом деле пытаюсь сделать это на Java, но я сейчас участвую в python, и это заставило меня задуматься, был ли простой/умный способ сделать это с помощью оберток или что-то в этом роде.
Я хочу знать, сколько раз был вызван конкретный метод внутри другого метода. Например:
def foo(z):
#do something
return result
def bar(x,y):
#complicated algorithm/logic involving foo
return foobar
Итак, для каждого вызова bar с различными параметрами я хотел бы знать, сколько раз было вызвано foo, возможно, с выходом следующим образом:
>>> print bar('xyz',3)
foo was called 15 times
[results here]
>>> print bar('stuv',6)
foo was called 23 times
[other results here]
edit: Я понимаю, что могу просто похлопать счетчик внутри бара и сбросить его, когда вернусь, но было бы здорово, если бы была какая-то магия, которую вы могли бы сделать с обертками, чтобы выполнить одно и то же. Это также означало бы, что я мог бы повторно использовать одни и те же обертки в другом месте, не изменяя код внутри метода.