def catch_exception(origin_func): def wrapper(self, args, kwargs): try: u = origin_func(self, args, kwargs) return u except Exception: self.revive() 不 ...
分类:
编程语言 时间:
2018-02-08 15:26:31
阅读次数:
166
Python版本:3.5.2 假如我们有一个Student类,并在其中定义了一个score属性,但是score属性会被显露出去,没办法检查参数,导致成绩可以随意更改: ~~~~ stu = Student() stu.score = 9999 ~~~~ 这显然是不合逻辑的,为了限制score的范围, ...
分类:
编程语言 时间:
2018-02-04 22:44:01
阅读次数:
203
对一组对象进行功能的增强,就可以使用到这个模式。 装饰设计模式与继承的区别? 都可以对对象的功能进行扩展,但是如果是继承,那么就需要一个继承体系,如果该对象要提高效率,就会出现为了提高效率而进行的继承,这会导致整个体系越来越臃肿,不够灵活。 装饰设计模式比继承更加灵活,不需要产生继承关系。 装饰类与 ...
分类:
其他好文 时间:
2018-01-12 13:36:46
阅读次数:
138
装饰着模式是动态的增强类的功能,要求被装饰的类必选实现了某个接口 被装饰类接口 被装饰类 装饰类 实例 ...
分类:
其他好文 时间:
2018-01-11 19:11:55
阅读次数:
95
装饰器模式,顾名思义,就是将某个类重新装扮一下,使得它比原来的功能更加强大,这就是装饰器所要达到的目的。但是作为原来这个类的使用者,不应感受到装饰前和装饰后有什么不同,否则就破坏了原有类的结构了,所以装饰器模式要做到对被装饰类的使用者透明,这是对装饰器模式最基本的要求。 装饰器模式的结构 下图是一个 ...
分类:
其他好文 时间:
2018-01-10 11:40:47
阅读次数:
157
顾名思义,装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例,关系图如下: Source类是被装饰类,Decorator类是一个装饰类,可以为Source类动态的添加一些功能,代码如下: [java]view plaincopy... ...
分类:
其他好文 时间:
2017-12-18 01:31:11
阅读次数:
187
1 装饰器 1.1装饰器定义 在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)。 1.2 装饰器分类 装饰器:函数装饰器,类装饰器,函数的装饰器,类的装饰器 装饰器:函数装饰函数,函数装饰类,类装饰函数,类装饰类(两者不是一一对应关系,其实我也不知道他们之间是什么样的对应关系 ...
分类:
编程语言 时间:
2017-12-11 00:37:43
阅读次数:
148
目前在中文网上能搜索到的绝大部分关于装饰器的教程,都在讲如何装饰一个普通的函数。本文介绍如何使用Python的装饰器装饰一个类的方法,同时在装饰器函数中调用类里面的其他方法。本文以捕获一个方法的异常为例来进行说明。 有一个类Test, 它的结构如下: 在类中有一个方法read_value(),这个方 ...
分类:
编程语言 时间:
2017-11-25 22:34:55
阅读次数:
146
通过装饰器函数修改一个类属性classMyClass:NAME=‘MyCLASSHAHAHA‘def__init__(self):passprint(MyClass.__dict__[‘NAME‘])MyCLASSHAHAHA等价于:defsetname(name):defwarpper(cls):cls.NAME=namereturnclsreturnwarpper@setname(‘MYCLASSenen‘)#classMyClass:passprint(MyClass..
分类:
其他好文 时间:
2017-11-14 15:34:18
阅读次数:
121
装饰者模式 1.概述: 动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加的灵活。 2.原理: 增加一个修饰的类来包裹原来的类,包裹的方式一般是通过将原来的对象作为修饰类的构造函数的参数。装饰类实现新的功能,但是,不需要用到新功能的地方,它可以直接调用原来的类中的方法,修饰类 ...