好吧,基础打好,聊聊decorator,先看这段代码:app
def SayHi(name): return "How are you {0}, good morning".format(name) def decoator(func): def func_wrapper(name): return "<p>{0}</p>".format(func(name)) return func_wrapper hi = decoator(SayHi) print hi("Allen")
当咱们每次调用hi()方法的时候,你不以为特别方便么?函数
不少人会问,为啥要用decoator?请想一想,再增长一个返回<div></div>的函数是否是更方便spa
好了,下面说点语法糖,用到@函数修饰code
def decoator(func): def func_wrapper(name): return "<p>{0}</p>".format(func(name)) return func_wrapper @decoator def SayHi(name): return "How are you {0}, good morning".format(name) print SayHi("Allen")
代码几乎没变,却更干净,整洁,优雅了orm
更多的时候,不少人这么使用decorator,是否是很舒服? blog
class Decorate: def decorate(self,func): def func_wrapper(self): return "<p>{0}</p>".format(func(self)) return func_wrapper class Person(object): d = Decorate() def __init__(self): self.name = "Allen" self.family = "Liu" @d.decorate def get_fullname(self): return self.name+" "+self.family my_person = Person() print my_person.get_fullname()<p>Allen Liu</p>