사용자 도구


파이썬 클래스 문법

__new__()

파이썬 인스턴스를 만드는 구조는 다음과 같다.

  1. A.__new__() 를 호출한다.
  2. 부모 클래스의 __new__() 처리
  3. 인스턴스 생성
  4. A.__init__()를 호출하여 인스턴스 초기화

하지만 __new__()를 쓰는 경우는 거의 없는 것 같다. 인터넷에서 찾을 수 있는 대부분의 파이썬 강좌에서는 __new__()에 대해 설명하지 않는다. 굳이 쓰자면 싱글톤 패턴 구현할 때?

다음은 __new__()를 이용한 싱글톤 패턴 예제이다.

>>> class A(object):
	instance = None
	def __new__(cls):
		if cls.instance is None:
			cls.instance = object.__new__(cls)
			print("__new__")
		return cls.instance
	def __init__(self):
		print("__init__")
 
 
>>> a = A()
__new__
__init__
>>> b = A()
__init__
>>> a
<__main__.A object at 0x02EC7C50>
>>> b
<__main__.A object at 0x02EC7C50>
>>> 

Decorator

메타클래스

참고