练习题
来源:5-7 编程范式练习题:编写一个单例模式

不失者2017
2019-06-24
class Singleton:
def __call__(self, func):
def wrapper(*args, **kwargs):
res = func(*args, **kwargs)
return res
return wrapper
def __new__(self, *args, **kwargs):
if not hasattr(self, '_instance'):
self._instance = super().__new__(self, *args, **kwargs)
return self._instance
@Singleton()
def MyClass():
time.sleep(1)
if __name__ == "__main__":
s1 = MyClass()
s2 = MyClass()
print(id(s1), id(s2))
print(s1 is s2)
写回答
1回答
-
对的,单例模式的实现有很多方式。通过 __new__方法,类装饰器等,面试的时候需要熟悉其中一种写法
012019-08-19
相似问题