【发布时间】:2011-06-26 15:01:50
【问题描述】:
我有以下装饰器,在调用@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"
我的问题是我需要访问装饰器saveconfig 内的对象变量self.cfg。第一种天真的方法是向保存对象的装饰器添加一个参数,例如@saveconfig(self),但这不起作用。
如何访问装饰器内方法宿主的对象变量?我是否必须在同一个类中定义装饰器才能访问?
【问题讨论】: