zoukankan      html  css  js  c++  java
  • Python decorator 拦截器

    例1 最简单

    def get_text(name):
        return "hello, {0}".format(name)
    
    def p_decorate(func):
        def func_wrapper(name):
            return "<p>{0}</p>".format(func(name))
        return func_wrapper
    
    my_get_text = p_decorate(get_text)
    print(my_get_text("zhangsan"))

    例2 参数通用化

    def p_decorate(func):
       def func_wrapper(*args, **kwargs):
           return "<p>{0}</p>".format(func(*args, **kwargs))
       return func_wrapper
    
    class Person(object):
        def __init__(self):
            self.name = "Neng"
            self.family = "Xiong"
    
        @p_decorate
        def get_fullname(self):
            return self.name+" "+self.family
    
    my_person = Person()
    print(my_person.get_fullname())

    例3  根据参数,实现动态拦截器

    def tags(tag_name):
        def tags_decorator(func):
            def func_wrapper(*args, **kargs):
                return "<{0}>{1}</{0}>".format(tag_name, func(*args, **kargs))
            return func_wrapper
        return tags_decorator
    
    @tags("div")
    @tags("p")
    @tags("strong")
    def get_text(name):
        return "hello, "+name
    
    print(get_text("zhangsan"))
  • 相关阅读:
    Application和Page详解
    Session解析
    CSS设置技巧
    CSS布局模型
    CSS盒模型
    JAVA -Xms -Xmx -XX:PermSize -XX:MaxPermSize 区别
    设计模式——单例模式
    设计模式——工厂模式
    Go语言学习
    每周一个设计模式
  • 原文地址:https://www.cnblogs.com/lxgbky/p/12627092.html
Copyright © 2011-2022 走看看