언어 Language/파이썬 Python

파이썬python 싱글턴singleton 예제 코드

Tap to restart 2021. 3. 10. 16:00
반응형

파이썬으로 싱글턴 예제 코드를 만들었다.

 

class SingletonExample:
    
    text = None
    
    def __new__(cls, *args, **kwargs):
        print('__new__')
        if not hasattr(cls, 'instance_'):
            print('not hasattr instance_')
            cls.instance_ = super().__new__(cls)
        return cls.instance_
        
    def __init__(self, *args, **kwargs):  
        print('__init__')   
        if not hasattr(self, "init_"):    
            print('not hasattr init_')
            self.init_ = True
            self.text = args[0]
        
s1 = SingletonExample('abcd')
print(s1)
print(s1.text)
s2 = SingletonExample('defg')
print(s2)
print(s2.text)

출력 결과

__new__
not hasattr instance_
__init__
not hasattr init_
<__main__.SingletonExample object at 0x7ff28967d3a0>
abcd
__new__
__init__
<__main__.SingletonExample object at 0x7ff28967d3a0>
abcd

SingletonExample 클래스로 s1, s2 객체를 2개 만들었다.

객체 안의 text를 출력해 보면 둘 다 똑같이 나온다.

주소도 동일하다.

 

s1 객체 안의 text 속성에 "AAA"를 할당한 뒤 s1, s2 모두 출력해본다.

s1.text = "AAA"
print(s1.text)
print(s2.text)

출력 결과

AAA
AAA

똑같이 나오는 것을 알 수 있다.

반응형