练习题

来源: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回答

PegasusWang

2019-07-11

对的,单例模式的实现有很多方式。通过 __new__方法,类装饰器等,面试的时候需要熟悉其中一种写法

0
1
不失者2017
非常感谢老师
2019-08-19
共1条回复

Python工程师面试宝典 一线大厂资深面试官亲授

Python工程师面试必看,资深面试官亲授,倍增面试成功率

1035 学习 · 102 问题

查看课程