0001 functools


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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值