美文网首页
Python基础28-面向对象(系统内置方法8-装饰器)

Python基础28-面向对象(系统内置方法8-装饰器)

作者: Jacob_LJ | 来源:发表于2018-05-24 21:18 被阅读63次

Python基础-面向对象(方法)

8 装饰器

1 装饰器(函数式实现)

2 通过类方式,实现装饰器

  • 通常装饰器使用
def check(func):
    print("增加功能")
    def inner():
        print("登录验证操作....")
        func()
    return inner

@check
def fss():
    print("发说说")

fss()

>>>> 打印结果

增加功能
登录验证操作....
发说说
  • 使用@check 方式实际上就是使用fss = check(fss)
def check(func):
    print("增加功能")
    def inner():
        print("登录验证操作....")
        func()
    return inner

# @check
def fss():
    print("发说说")

fss = check(fss) # 使用@check 方式实际上就是使用`fss = check(fss)`

fss()

>>>> 打印结果

增加功能
登录验证操作....
发说说
  • 那么对于fss = check(fss),使用对象思想的理解就是:
    1. check 是一个类,check()方式是实例化 check 类;
    2. check类实例化时接收一个参数,参数就是是 fss 函数;
    3. fss 就是 check类的实例对象;
    4. fss() 就是调用实例方法,此时的 check 类必须实现了__call__方法;
      实现代码如下
class check:

    def __init__(self, func):
        self.func = func

    def __call__(self, *args, **kwargs):
        print("增加功能")
        print("登录验证操作....")
        self.func()

def fss():
    print("发说说")

fss = check(fss)

fss()

>>>> 打印结果

增加功能
登录验证操作....
发说说
  • 通过@check 方式,通过类,实现装饰器
class check:

    def __init__(self, func):
        self.func = func

    def __call__(self, *args, **kwargs):
        print("增加功能")
        print("登录验证操作....")
        self.func()


@check
def fss():
    print("发说说")

fss()

>>>> 打印结果

增加功能
登录验证操作....
发说说

问题:

  1. 回顾装饰器的概念及通过闭包及返回函数方式的实现
  2. 代码练习:通过类形式实现装饰器

相关文章

  • Python基础28-面向对象(系统内置方法8-装饰器)

    8 装饰器 1 装饰器(函数式实现) 2 通过类方式,实现装饰器 通常装饰器使用 使用@check 方式实际上就是...

  • 装饰器模式

    介绍 在python装饰器学习 这篇文章中,介绍了python 中的装饰器,python内置了对装饰器的支持。面向...

  • property、classmethod、staticmetho

    属性方法 类方法 静态方法 property 内置装饰器函数,只能在面向对象中使用 能将一个方法伪装成一个属性 通...

  • Python面向对象1

    Python支持多种编程方式:面向过程,面向对象,面向切面(装饰器部分)等 OOP思想 面向对象的基本哲学:世界是...

  • python基础-02

    Python 面向对象 python是一门面向对象的语言 Python内置类属性 python对象销毁(垃圾回收)...

  • Python基础手册25——装饰器

    一、装饰器 装饰器背后的主要动机源自 python 面向对象编程。装饰器是在函数调用之上的修饰。这些修饰仅是当声明...

  • Python基础语法——面向对象(下)

    面向对象三大思想:封装、继承、多态。 可参考一些优质文章: 关于面向对象的相关理解解释: 面向对象基础 装饰器、类...

  • Python中@property的使用讲解

    装饰器(decorator)可以给函数动态加上功能,对于类的方法,装饰器一样起作用。Python内置的@prope...

  • 36-@property装饰器

    @property装饰器 Python内置的@property装饰器可以把类的方法伪装成属性调用的方式 。 将一个...

  • Python基础27-面向对象(系统内置方法7-描述器)

    7 描述器 1 概念 用于描述一个属性对应操作的对象。 属性对应操作一般为:增/改、删、查 2 作用 可以代为管理...

网友评论

      本文标题:Python基础28-面向对象(系统内置方法8-装饰器)

      本文链接:https://www.haomeiwen.com/subject/vhxljftx.html