python 装饰器 四 (带有类参数的装饰器)

#!/usr/bin/env python#_*_coding=utf-8_*_#Author: xieyixue#mail: [email protected]#Created Time: 2015年07月01日 星期三 01时30分36秒

class staticClass:

    def __init__(self):        print "初始化"

 @staticmethod def before():        print "before"

 @staticmethod def after():        print  "after"

def deco_class(arg_class):

    def deco_fun(*arg,**kwarg):

        def _deco_fun(*arg,**kwarg):

            arg_class.before()

            ret = deco_fun(*arg,**kwarg)

            arg_class.after()            return ret        return _deco_fun    return deco_fun

@deco_class(staticClass)def fun1(a):    print a    print ‘======为什么没打印啊‘

fun1(‘xixi‘)
时间: 2024-10-14 02:40:36

python 装饰器 四 (带有类参数的装饰器)的相关文章

python装饰器详解,多层装饰器,及带参数的装饰器。

pyhon学习有一段时间了,今天又碰到了Django的中间件,其实Django里面的中间件,就是用了多层的装饰器,然后去了解了一下多层装饰器,感觉有写东西差不多快忘了,也可能前面没学好. 现在重新记录,学习下. 普通装饰器: def warp(func): print('我是装饰器,碰到需要装饰的函数,一开始执行这里') def inner(*args, **kwargs): print('这里才是真正的装饰开始!') res = func(*args, **kwargs) print('装饰结

Python 进阶(四)类的继承

继承一个类 如果已经定义了Person类,需要定义新的Student和Teacher类时,可以直接从Person类继承: class Person(object): def __init__(self, name, gender): self.name = name self.gender = gender 定义Student类时,只需要把额外的属性加上,例如score: class Student(Person): def __init__(self, name, gender, score)

python 解析ajax请求带有json参数,请求方式是post的url(注意:参数的json格式的)

import requests # tag = 'http://exercise.kingname.info/exercise_ajax_1.html'#最开始的网址,下面两个为子链接 url = 'http://exercise.kingname.info/ajax_1_backend' url2 = 'http://exercise.kingname.info/ajax_1_postbackend' req = requests.get(url) print(req.text) params

python -- 带有参数的装饰器

1.带有参数的装饰器示例 def decorator(arg1, arg2): def real_decorator(func): def wrapper(*args, **kwargs): print("You decorated a function that does something with %s and %s" % (arg1, arg2)) func(*args, **kwargs) return wrapper return real_decorator @decor

[python] 带有参数并且传递参数的装饰器

场景时这样的,我有个一大堆任务,我要给这些任务计时,入库.就需要一个带有参数的装饰器来记录任务名称, 在任务执行前和执行之后都需要记录任务当时执行的时刻. #-*- encoding=utf-8 -*- from functools import wraps def task_logging(taskname): def func_wrapper(func): @wraps(func) def return_wrapper(*args, **wkargs): # 函数通过装饰起参数给装饰器传送参

python之带有参数的装饰器

一个小demo def set_level(level_num): def set_func(func): def call_func(*args, **kwargs): if level_num == 1: print("----权限级别1,验证----") elif level_num == 2: print("----权限级别2,验证----") return func() return call_func return set_func # 带有参数的装饰器

python 装饰器 三 (带有参数的装饰器)

#接受装饰器的参数 def deco_arg(deco_arg): #接受函数 此列为func1 def deco_func(*argv,**kwag): #接受函数的方法 此列为 a b def _deco_func(*argv,**kwarg): print "before -------执行函数前" print "%s     -------打印装饰器的参数"% deco_arg ret = deco_func(*argv,**kwarg) print &qu

Python装饰器AOP 不定长参数 鸭子类型 重载(三)

1 可变长参数与关键字参数 *args代表任意长度可变参数 **kwargs代表关键字参数 用*args和**kwargs只是为了方便并没有强制使用它们. 缺省参数即是调用该函数时,缺省参数的值若未被传入,则传入默认预设的值. 注意 : 须将所有带有默认值的参数置于参数列表的末尾. def print_info(name, age = 18,gender = True ) print_info("zhan", gender = False ) def demo(num, *nums ,

Python之路(十二):描述符,类装饰器,元类

python基础之面向对象(描述符.类装饰器及元类) 描述符 描述符(__get__,__set__,__delete__)   # 这里着重描述了python的底层实现原理 1. 描述符是什么:描述符本质就是一个新式类,在这个新式类中,至少实现了__get__(),__set__(),__delete__()中的一个,这也被称为描述符协议. __get__():调用一个属性时,触发 __set__():为一个属性赋值时,触发 __delete__():采用del删除属性时,触发 1 class