装饰器 decorator,装饰decorator,装饰器的简单应用方法A和


装饰器的简单应用

方法A和类A可以相互替换

# -*- coding:utf-8 -*-from functools import wraps#class A(object):#    #    def __init__(self, cls=None):#        self.cls = cls#        #    def __call__(self, func):#        @wraps(func)#        def simulate_func(x, y):#            if y == 0:#                self.cls().print_error()#            else:#                func(x, y)#        return simulate_funcdef A(cls):    def wraps_cls(func):        @wraps(func)        def wraps_func(x, y):            if y == 0:                cls().print_error()            else:                func(x, y)        return wraps_func    return wraps_clsclass B(object):    def print_error(self):        print ' ZeroDivision 'class C(object):    def print_error(self):        print ' too large '@A(B)def printb(x, y):    print x / y@A(C)def printc(x, y):    print x / yprintb(3, 0)print printbprintc(3, 0)print printc#该片段来自于http://byrx.net

评论关闭