理解Python装饰器(一)

发布时间:2019-07-22 09:57:32编辑:auto阅读(1440)

    python装饰器

    装饰器是什么?我也不知道该如何给装饰器下定义。

    1. 装饰器是函数,因为从代码的层面上来说,它就是开发人员定义的一个函数而已;
    2. 装饰器就像是类的继承一样,通过装饰符,来实现函数与函数、函数与类之间的"继承"
    3. 装饰器是种特殊的语法,通过 `@函数名` 或者 `@类名` 来实现函数或类的继承,但是
        装饰器不是继承,装饰器装饰的函数会被当做参数传递给装饰器,这个功能又好像
        C++中的虚函数,装饰器装饰的函数用来修改装饰器本身的功能来实现额外功能的添加。

    示例:人与超人

    前提:人 - 会走、会说话、会哭、会笑、会吃饭;超人 - 会走、会说、会哭、会笑、会吃饭、会飞

    class man(object):
        def __init__(self, f):
            self.f = f
        def __call__(self):
            print("我会走路")
            print("我会说话")
            print("我会哭")
            print("我会笑")
            print("我会吃饭")
            self.f()
    
    @man
    def Super_man():
        print("我是超人,我会飞")
    
    Super_man()

    运行结果:

    理解Python装饰器(一)

    个人看法

    装饰器可以用来解决上述例子中的一类问题:功能不清楚且会增加。只要定义好装饰器,
    可以很好的实现代码的复用提高代码的可读性。所以,想要对装饰器有更加深入的理解,
    一定要多思考,把编程中遇到的可以用装饰器解决的问题给解决掉;另一点就是要多看
    别人的代码,在别人的代码中找到一些不一样的用法,然后思考为什么那么用,如果合
    理就借鉴别人的思路和方法。

    Python装饰器的用语、细节

    这部分内容在网上可以直接搜到,不进行记录,参考文章中提到的文章均有此模块的介绍

    参考文章

    如何理解Python装饰器? - 知乎
    简单 12 步理解 Python 装饰器 - 伯乐在线
    Python装饰器简介 - Bruce Eckel
    带有参数的Python装饰器 - Bruce Eckel

关键字