, , - :
class myDecorator(object):
def __init__(self, inner):
self.inner = inner
self.log = {}
def __getattr__(self,name):
self.log[name] = self.log.get(name,0)+1
return getattr(self.inner,name)
def __setattr__(self,name,value):
setattr(self.inner,name,value)
, , . , , .
, , , , . ( )
. , , -, .
class LoggerLogger(object):
def __init__(self,inner,name):
self.inner = inner
self.calls = 0
def __call__(self,*args,**kwargs):
self.calls += 1
return self.inner(*args,**kwargs)
def loggerDecorator(func):
def inner(name):
logger = func(name)
logger.debug = LoggerLogger(logger.debug,name)
return inner
getLogger = loggerDecorator(getLogger)