类装饰器实现路由功能:

class Router(object):

    def __init__(self):
        self.url_map = {}

    def register(self, url):
        def wrapper(func):
            self.url_map[url] = func

        return wrapper

    def call(self, url):
        func = self.url_map.get(url)
        if not func:
            raise ValueError('No url function: %s', url)
        return func()


router = Router()


@router.register('/page1')
def page1():
    return 'this is page1'


@router.register('/page2')
def page2():
    return 'this is page2'


print(router.call('/page1'))
print(router.call('/page2'))

类装饰器实现简单的函数装饰

class HiDecorate(object):
    def info(self, func):
        def wrapper(*args, **kwars):
            func(*args, **kwars)

        return wrapper


decorate = HiDecorate()


@decorate.info
def f():
    print('Hi Decorate')


原创文章,转载请注明出处:http://124.221.219.47/article/54177/