반응형
파이썬으로 싱글턴 예제 코드를 만들었다.
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
똑같이 나오는 것을 알 수 있다.
반응형