У меня есть следующий декоратор, который сохраняет файл конфигурации после того, как метод, украшенный @saveconfig
, будет называется:
class saveconfig(object):
def __init__(self, f):
self.f = f
def __call__(self, *args):
self.f(object, *args)
# Here i want to access "cfg" defined in pbtools
print "Saving configuration"
Я использую этот декоратор внутри следующего класса. После вызова метода createkvm
объект конфигурации self. cfg
должен быть сохранен внутри декоратора:
class pbtools()
def __init__(self):
self.configfile = open("pbt.properties", 'r+')
# This variable should be available inside my decorator
self.cfg = ConfigObj(infile = self.configfile)
@saveconfig
def createkvm(self):
print "creating kvm"
Моя проблема в том, что мне нужно получить доступ к объектной переменной self.cfg
внутри декоратора saveconfig
. Первым наивным подходом было добавление параметра к декоратору, который содержит объект, например @saveconfig (self)
, но это не сработало.
Как я могу получить доступ к объектным переменным хоста метода внутри декоратора? Должен ли я определять декоратор внутри того же класса, чтобы получить доступ?