python 装饰器的使用

本人比较懒字体比较少,自己看

# -*- coding: utf-8 -*-
# todo 不带参数的装饰器  case1, case2, case3, case4

# todo case 1
# def kaishi(f):
#     def kaishi1(asd):
#         f(asd)
#     return kaishi1
# @kaishi
# def lll(name):
#     print(name)

# todo case 2 等效于 case1
# def kaishi(f):
#     def kaishi1(asd):
#         f(asd)
#     return kaishi1
#
#
# def lll(name):
#     print(name)
# lll = kaishi(lll)
# lll('aaaas')

# todo case3 等效于 case1,case2
# class kaishi():
#     def __init__(self,f):
#         self.f = f
#     def __call__ (self,asd):
#         self.f(asd)
# # @kaishi
# # def lll(name):
# #     print(name)
#
# def lll(name):
#     print(name)
# lll = kaishi(lll)
# lll('aaaas')


# todo case4 等效于 case1,case2,case3,case4
# class kaishi():
#     def __init__(self,f):
#         self.f = f
#     def __call__ (self,asd):
#         self.f(asd)
#
# @kaishi
# class bekaishi():
#     def __init__(self,name):
#         print(name)
# bekaishi('aaaa')


# todo  带参数的装饰器

# todo case1
# def kaishi(name=None):
#     print(name)
#     def kaishi1(f):
#         print(f)
#         def kaishi2(name):
#             print(name)
#             f(name)
#         return kaishi2
#     return kaishi1
#
# @kaishi('name')
# def fuc(name):
#     print(name)
# fuc('sadasd')

# todo case1 等效于 case2

# case2
# def kaishi(name=None):
#     print(name)
#     def kaishi1(f):
#         print(f)
#         def kaishi2(name):
#             print(name)
#             f(name)
#         return kaishi2
#     return kaishi1
#
# @kaishi('name')
# def fuc(name):
#     print(name)
#
# aaa = kaishi('name')
# fuc = aaa(fuc)
# fuc('asasdas')


# todo case3 等效 case1,case2
class kaishi():
    def __init__(self,name=None):
        self.name = name
    def __call__(self,f):
        print(f)
        def kaishi2(name):
            print(name)
            f(name)
        return kaishi2


# @kaishi('name')
def fuc(name):
    print(name)

aaa = kaishi('name')
fuc = aaa(fuc)
fuc('asasdas')









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值