Python类装饰器

class person():
    # 初始化要装饰的函数
    def __init__(self,fn):
        self.__fn = fn

    # 在call方法中使用目标函数
    def __call__(self, *args, **kwargs):
        print('呵呵')
        self.__fn()

@person
def show():
    print('哈哈')

show()

# 方法之所以能使用是因为其自带__call__方法
# 输出:
# 呵呵
# 哈哈

分析:

  1. person类修饰了方法show,show方法作为fn参数传给了person的私有属性fn
  2. 自动调用call方法
posted @ 2021-03-09 19:24  code-G  阅读(69)  评论(0编辑  收藏  举报