Python-wraps 简单实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/usr/bin/python3
# wraps 实现原理

from functools import wraps


def myWraps(src):
    print(src.__name__)
    def copyIt(dst):
        print(dst.__name__)
        dst.__name__ == src.__name__
        dst.__doc__ == src.__doc__
        return dst
    return copyIt


def logit(fn):
    @myWraps(fn)
    def wapper(*args, **kwargs):
        print('hello')
        print(fn.__name__)
        return fn(*args, **kwargs)
    return wapper

@logit
def a(ad):
    print(1)

a(1)


'''
result:
a
wapper
hello
a
1
'''