预约成功
使用装饰器来实现单例模式也是python的经典面试题,可以一道简单的题目同时考察装饰器的理解和单例的实现。
装饰器(decorator)可以动态地修改一个类或函数的功能。这里,我们也可以使用装饰器来装饰某个类,使其只能生成一个实例
def singleton(cls, *args, **kw):
instances = {}
def _singleton():
if cls not in instances:
instances[cls] = cls(*args, **kw)
return instances[cls]
return _singleton
@singleton
class MyClass4(object):
a = 1
def __init__(self, x=0):
self.x = x
one = MyClass4()
two = MyClass4()
two.a = 3
print one.a
优点:相比多重继承来说,使用装饰器会更加直观,更pythonic,更elegant的方法
缺点:当你实例化Myclass的时候,得到的其实是singleton对象,是一个方法,而不是类,所以没办法使用类的本身的属性
以上就是装饰器模式的使用场景。可能在刚讲解完这一实际应用之后,大家的印象还很模糊,不如打开电脑,那正好现在就上手操作一下,试一试吧!也许你还会发现更多python应用为您带来的乐趣环球网校的小编在这里希望这些信息可以对您有所帮助。