yuu
9/27/2018 - 1:39 AM

[learn] Python 3

[learn] Python 3

# https://wandbox.org/permlink/imoBGl7tNgWngfaK

def do_twice(func):
    print('call do_twice: {}'.format(func))
    def wrap(*args, **kwargs):
        func(*args, **kwargs)
        func(*args, **kwargs)
    return wrap


@do_twice
def start():
    print('called start')
 

class A:
    @do_twice
    def end(self):
        print('called end')

"""
関数は、import時。
メソッドは、インスタンス作成時。
にデコレートされる。
"""
a = A()
a.end()

"""
Start
call do_twice: <function start at 0x7f12634427b8>
call do_twice: <function A.end at 0x7f1263442950>
called end
called end
0
Finish
"""