[python] Počítání volání metod
martin.stiborsky na gmail.com
martin.stiborsky na gmail.com
Čtvrtek Prosinec 20 22:40:57 CET 2007
Zdravím, dneska budu ještě jednou otravovat.
Michal Vyskočil mi poradil, jak přijít na jméno volané metody, za to
mu díky, mně to hned posloužilo k realizování mého záměru, počítání
kolikrát byla metoda zavolána, nevím jestli to neřeším úplně blbě.
Totiž, chci to využít na statisrtiky na mých webových stránkách, ve
třídě která obsluhuje servírování dat z databáze a jejich renderování
do šablon, mám pro články/kategorie/indexovou stránku vlastní metodu,
takže mě napadlo, že vždy když někdo chce něco zobrazit, tak se tato
metoda musí zavolat a tím pádem já tohle můžu sledovat a počítat podle
toho, spolu s id volaného objektu z databáze které metoda dostane pak
můžu určit co přesně bylo v požadavku.
Takže co jsem vymyslel a funguje to:
# -*- coding: utf-8 -*-
from inspect import *
results = dict()
def check(classname):
class_name = classname()
method_name = stack(class_name)[1][3]
if not method_name in results.keys():
results[method_name] = 1
else:
results[method_name] += 1
def print_results():
for key,value in results.iteritems():
print '%s - %s' % (key, value)
class App1:
def foo(self):
check(self.__class__)
def bar(self):
check(self.__class__)
App1().bar()
App1().bar()
App1().bar()
App1().bar()
App1().foo()
print_results()
Vrací to správný výsledek, jenom se bojím, že moje myšlenka je úplně
špatná, takže prosím o kritiku.
Děkuji.
Další informace o konferenci Python