方法一:装饰器利用“装饰器只会执行一次”这个特点def singleton(cls):
instances = []# 为什么这里不直接为None,因为内部函数没法访问外部函数的非容器变量
def getinstance(*args, **kwargs):
if not instances:
instances.append(cls(*args...
分类:
编程语言 时间:
2015-06-28 17:09:46
阅读次数:
220
编写无参数decoratorPython的decorator本质上就是一个高阶函数,它接收一个函数作为参数,然后,返回一个新函数。使用 decorator 用Python提供的@语法,这样可以避免手动编写f = decorate(f)这样的代码。考察一个@log的定义:1 def log(f):2 ...
分类:
编程语言 时间:
2015-06-25 12:14:02
阅读次数:
185
装饰器基本概念大家都知道装饰器是一个很著名的设计模式,经常被用于AOP(面向切面编程)的场景,较为经典的有插入日志,性能测试,事务处理,Web权限校验, Cache等。Python语言本身提供了装饰器语法(@),典型的装饰器实现如下: @function_wrapper
def function():
pass@实际上是python2.4才提出的语法糖,针对python2...
分类:
编程语言 时间:
2015-06-17 21:41:29
阅读次数:
154
##装饰器基本概念 大家都知道装饰器是一个很著名的设计模式,经常被用于AOP(面向切面编程)的场景,较为经典的有插入日志,性能测试,事务处理,` Web权限校验 `, `Cache `等。 Python语言本身提供了装饰器语法(...
分类:
编程语言 时间:
2015-06-17 20:08:23
阅读次数:
128
python 装饰器 decorator 使用...
分类:
编程语言 时间:
2015-06-06 16:39:34
阅读次数:
109
1、反射之__import__我们知道import语句是用来导入外部模块的,当然还有from...import...也可以,但是其实import实际上是使用builtin函数__import__来工作的。在一些程序中,我们可以动态地去调用函数,如果我们知道模块的名称(字符串)的时候,我们可以很方便的使用动态调用。_..
分类:
编程语言 时间:
2015-06-01 00:57:59
阅读次数:
173
由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数。>>> def now():... print '2013-12-25'...>>> f = now>>> f()2013-12-25函数对象有一个__name__属性,可以拿到函数的名字:>>> now.__...
分类:
编程语言 时间:
2015-05-14 16:21:37
阅读次数:
133
今天来讨论一下装饰器。装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志、性能测试、事务处理等。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数中与函数功能本身无关的雷同代码并继续重用。概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能。1. 装...
分类:
编程语言 时间:
2015-04-29 23:06:56
阅读次数:
143
装饰器基本概念大家都知道装饰器是一个很著名的设计模式,经常被用于AOP(面向切面编程)的场景,较为经典的有插入日志,性能测试,事务处理,Web权限校验,Cache等。Python语言本身提供了装饰器语法(@),典型的装饰器实现如下:@function_wrapper
deffunction():
pass@实际上..
分类:
编程语言 时间:
2015-04-29 07:25:55
阅读次数:
185