zoukankan      html  css  js  c++  java
  • python装饰器的4种类型:函数装饰函数、函数装饰类、类装饰函数、类装饰类

    一:函数装饰函数

    def wrapFun(func):
        def inner(a, b):
            print('function name:', func.__name__)
            r = func(a, b)
            return r
        return inner
    
    @wrapFun
    def myadd(a, b):
        return a + b
    
    print(myadd(2, 3))

    二:函数装饰类

    def wrapClass(cls):
        def inner(a):
            print('class name:', cls.__name__)
            return cls(a)
        return inner
    
    @wrapClass
    class Foo():
        def __init__(self, a):
            self.a = a
    
        def fun(self):
            print('self.a =', self.a)
    
    
    m = Foo('xiemanR')
    m.fun()

     

    三:类装饰函数

    class ShowFunName():
        def __init__(self, func):
            self._func = func
    
        def __call__(self, a):
            print('function name:', self._func.__name__)
            return self._func(a)
    
    
    @ShowFunName
    def Bar(a):
        return a
    
    print(Bar('xiemanR'))

     

    四:类装饰类

    class ShowClassName(object):
        def __init__(self, cls):
            self._cls = cls
    
        def __call__(self, a):
            print('class name:', self._cls.__name__)
            return self._cls(a)
    
    
    @ShowClassName
    class Foobar(object):
        def __init__(self, a):
            self.value = a
    
        def fun(self):
            print(self.value)
    
    a = Foobar('xiemanR')
    a.fun()
  • 相关阅读:
    转:python2.x 和 python3.x的区别
    迭代器
    C++学习笔记-预备知识
    phpstudy扩展mongoDB
    Linux gd库安装步骤说明
    Linux jpeglib库的安装
    github开源项目
    本地文件拖拽到虚拟机里,文件存储位置
    linux php 扩展安装
    CentOS6.10 Nginx无法解析php文件
  • 原文地址:https://www.cnblogs.com/slqt/p/10342870.html
Copyright © 2011-2022 走看看