@aoo def foo(): pass def aoo(fn): return fn
import functools def log_wrapper(fun): @functools.wraps(fun) def wrapper(*args, **kwargs): print '在函数执行前加日志' ret = fun(*args, **kwargs) print '在函数执行后家日志' return ret return wrapper @log_wrapper def test(): print 'Hello, 世界'
def foo(x):
y = x
def foo1 ():
a = 1
return a
return foo1
def aoo(a, b):
c = a
def boo (x):
x = b + 1
return x
return boo
class Foo(object):
def __init__(self, …):
self.lock = threading.Lock()
def interface1(self, …):
self.lock.acquire()
try:
do something
finally:
self.lock.release()
def interface2(self, …):
same as interface1()
…
def sync(func):
def wrapper(*args, **kv):
self = args[0]
self.lock.acquire()
try:
return func(*args, **kv)
finally:
self.lock.release()
return wrapper
class Foo(object):
def __init__(self, …):
self.lock = threading.Lock()
@sync
def interface1(self, …):
do something
@sync
def interface2(self, …):
do something
…
class DecorateClass(object):
def decorate(self):
for name, fn in self.iter():
if not self.filter(name, fn):
continue
self.operate(name, fn)
class LockerDecorator(DecorateClass):
def __init__(self, obj, lock = threading.RLock()):
self.obj = obj
self.lock = lock
def iter(self):
return [(name, getattr(self.obj, name)) for name in dir(self.obj)]
def filter(self, name, fn):
if not name.startswith('_') and callable(fn):
return True
else:
return False
def operate(self, name, fn):
def locker(*args, **kv):
self.lock.acquire()
try:
return fn(*args, **kv)
finally:
self.lock.release()
setattr(self.obj, name, locker)
class Foo(object):
def __init__(self, …):
…
LockerDecorator(self).decorate()
def interface1(self, …):
do something
def interface2(self, …):
do something
…
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有