理解Python装饰器(一)

python装饰器

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

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

示例:人与超人

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

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装饰器的用语、细节

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

参考文章

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

相关文章
相关标签/搜索