2018-02-13 Python 语法糖: 装饰器的使用

class A(object):

    def  __call__(self, *args, **kw):

        self.run(*args,**kw)

    def run(self,*args,**kw):

        raise NotImplementedError

def decorator(fun):

    class B(A):

        def  run(self,*args,**kw):

            return fun(*args,**kw)

    retrun B()

@decorator

def test(string):

    return string


test('A')

编译器处理过程:

先将 text 重新赋值:

test = decorator(test)

然后开始调用过程

test('A') = decorator(test)('A')

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,288评论 19 139
  • 基础1.r''表示''内部的字符串默认不转义2.'''...'''表示多行内容3. 布尔值:True、False(...
    neo已经被使用阅读 1,790评论 0 5
  • 显示有限的接口到外部 当发布python第三方package时, 并不希望代码中所有的函数或者class可以被外部...
    种花家LY阅读 390评论 0 0
  • 最全的iOS面试题及答案 1. Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重...
    韩七夏阅读 3,429评论 3 35
  • 文|零露 作者:唐代著名的文学家、哲学家、散文家和思想家。同韩愈齐名,并称“韩柳”,和宋朝的苏轼、苏询、苏辙、王安...
    零露_清扬婉兮阅读 2,346评论 2 12