单例模式

单例模式

单例模式:每次实例化对象都是用的同一个内存地址【第一个对象】。

  • 基于模块导入实现

  • 基于面向对象实现

    手撕一个单例模式示例:

    import threading
    
    
    class Singleton:
        instance = None
        lock = threading.RLock()
    
        def __init__(self, name):
            self.name = name
    
        def __new__(cls, *args, **kwargs):
            if cls.instance:
                return cls.instance
            with cls.lock:
                if cls.instance:
                    return cls.instance
                import time
                cls.instance = object.__new__(cls)
                return cls.instance
    
    
    def task():
        obj = Singleton("x")
        print(obj)
    
    
    for i in range(10):
        t = threading.Thread(target=task)
        t.start()
    
posted @ 2024-10-18 10:24  清风拂山岗(小高同学)  阅读(2)  评论(0编辑  收藏  举报