사용자 도구

사이트 도구


python:singleton

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

다음 판
이전 판
python:singleton [2016/02/01 06:38] – 만듦 rex8312python:singleton [2024/03/23 02:42] (현재) – 바깥 편집 127.0.0.1
줄 1: 줄 1:
 ====== Python: Singleton ====== ====== Python: Singleton ======
- 
- 
-  * http://stackoverflow.com/questions/6760685/creating-a-singleton-in-python 
  
 <code python> <code python>
 +# class Singleton(type):
 +#     _instances = {}
 +#     def __call__(cls, *args, **kwargs):
 +#         if cls not in cls._instances:
 +#             cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
 +#         return cls._instances[cls]
 +              
 class Singleton(type): class Singleton(type):
-    _instances = {} +     _instances = {} 
-    def __call__(cls, *args, **kwargs): +     def __call__(cls, *args, **kwargs): 
-        if cls not in cls._instances+         cls._instances.setdefault(clssuper().__call__(*args, **kwargs)
-            cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs) +         return cls._instances[cls]
-        return cls._instances[cls]+
  
-#Python2+       
 +# Python2
 class MyClass(BaseClass): class MyClass(BaseClass):
     __metaclass__ = Singleton     __metaclass__ = Singleton
 +    pass
 +  
  
-#Python3+# Python3
 class MyClass(BaseClass, metaclass=Singleton): class MyClass(BaseClass, metaclass=Singleton):
     pass     pass
 +  
 +
 +# Test
 +for x in range(5):
 +    MyClass().x = x
 +    print(MyClass().x)
 </code> </code>
 +
 +  * https://medium.com/techtofreedom/3-levels-of-understanding-the-singleton-pattern-in-python-4bf429a10438  
 +  * http://stackoverflow.com/questions/6760685/creating-a-singleton-in-python
 +
python/singleton.1454308695.txt.gz · 마지막으로 수정됨: (바깥 편집)