import functools
#partial 用于一此地方限制了参数的个数和类型
def t1(w):
print('this is : %s..' %w)
p1=functools.partial(t1,'hello world')
p1()
#partialmethod 类方法的 partial 方案
class C1():
def __init__(self):
self._alive=False
@property
def alive(self):
return self._alive
def set_state(self,state):
self._alive=bool(state)
set_alive=functools.partialmethod(set_state,True)
set_dead=functools.partialmethod(set_state,False)
c=C1()
print(c.alive)
c.set_alive()
print(c.alive)
#updata_wrapper 把 func的 一些属性传到 wapper 函数里
def w1(func):
@functools.wraps(func)
def _(*args,**kw):
print('this is in wapper 1')
return func(*args,**kw)
return _
def w2(func):
def _(*args,**kw):
print('this is in wapper 2')
return func(*args,**kw)
return functools.update_wrapper(_,func)
def w3(func):
def _(*args,**kw):
print('this is in wapper 3')
return func(*args,**kw)
return _
@w1
def f1():
print('this is in func f1')
f1()
print(f1.__name__)
f2=w2(f1)
f2()
print(f2.__name__)
f3=w3(f1)
f3()
print(f3.__name__)
结果 :
this is : hello world..
False
True
this is in wapper 1
this is in func f1
f1
this is in wapper 2
this is in wapper 1
this is in func f1
f1
this is in wapper 3
this is in wapper 1
this is in func f1