Python
Python AOP
- 用原类实现AOP
- {{{!#python
class MetaAll(type):
def new(mcl, name, bases, dict):
- def log(func):
- def f(*args, **kwds):
print 'pre %s' % func.name value = func(*args, **kwds) print 'post %s' % func.name return value
- if attr.startswith('set'):
- dict[attr] = log(value)
return super(MetaAll, mcl).new(mcl, name, bases, dict)
- def f(*args, **kwds):
- def log(func):
metaclass = MetaAll
class A:
def init(self):
self.x = 1
return self.x
self.x = value
a = A() a.setx(2) print a.getx() }}}