Поскольку вы декорируете метод, а self
является аргументом метода, ваш декоратор имеет доступ к self
во время выполнения. Очевидно, не во время синтаксического анализа, потому что еще нет объектов, просто класс.
Итак, вы измените свой декоратор на:
def decorator(func):
def _decorator(self, *args, **kwargs):
# access a from TestSample
print 'self is %s' % self
func(self, *args, **kwargs)
return _decorator