1. http://python.org/dev/peps/pep-3129/
2. Дерево вызовов? Мы одно и то же подразумеваем под “логированием”? Для меня это помимо всего прочего использование инфраструктуры стандартного пакета logging.
каким образом, флаг _throw_exc_on_False или любой другой можно передать
class LoggedClass(type):
def __call__(cls, *args, **kargs):
if hasattr(cls, '_throw_exc_on_False'):
print getattr(cls, '_throw_exc_on_False')
return type.__call__(cls, *args, **kargs)
class CustomClass(object):
__metaclass__ = LoggedClass
_throw_exc_on_False = True
CustomClass()
shupgспасибо большое!каким образом, флаг _throw_exc_on_False или любой другой можно передатьclass LoggedClass(type):
def __call__(cls, *args, **kargs):
if hasattr(cls, '_throw_exc_on_False'):
print getattr(cls, '_throw_exc_on_False')
return type.__call__(cls, *args, **kargs)
class CustomClass(object):
__metaclass__ = LoggedClass
_throw_exc_on_False = True
CustomClass()
class LoggedClass(type):
def __call__(cls, *args, **kargs):
return type.__call__(cls, *args, **kargs)
class CustomClass(CustomClassBase, object):
__metaclass__ = LoggedClass
_throw_exc_on_False = True
CustomClass()
def decorator(f):
def func(*args, **kargs):
print 'executing %s...' % f.__name__
return f(*args, **kargs)
return func
klЭто как? Тип возвращаемого значения — динамически определяется. Что вернете, то и будет. В момент вызова.
Если быть более точным, мне интересна возможность
декорирования только методов данного конкретного класса,
возвращающих только bool (True/False), что должно отличаться,
например, от просто целочисленного 0.
klПлохо искали :(. вот например.
Везде много примеров кода декоратора именно для функции в стиле