Python - Class - 클래스 변수와 인스턴스 변수, 생성자와 소멸자

반응형

클래스 변수

  • 클래스 이름 공간에 생성, 모든 인스턴스에 공유

 

인스턴스 변수

  • 인스턴스 이름 공간에 생성, 인스턴스마다 독립
class Var :
	c_mem = 100 # 클래스 변수 (= 클래스 멤버)
    
	def f(self):
		self.i_mem = 200
        
v1 = Var() # 인스턴스 변수1 (= 인스턴스 멤버)
v2 = Var() # 인스턴스 변수2 (= 인스턴스 멤버)
print(Var.c_mem, v1.c_mem, v2.c_mem)
>>> 100 100 100 # 클래스 변수의 값은 모든 인스턴스에 공유

v1.c_mem = 50
print(Var.c_mem, v1.c_mem, v2.c_mem)
>>> 100 50 100 # 인스턴스 변수의 값은 인스턴스마다 독립적

v1.f()
print(v1.i_mem) >>> 200
print(v2.i_mem) >>> error # 인스턴스마다 독립적이기 때문에 값이 존재하지 않음

생성자

  • 객체(인스턴스)가 생성될 때 자동으로 호출되는 함수
  • __init__으로 정의 ( __의 의미는 예약된 이름, __name__, __main__ 등)
  • 일반적으로 객체가 보유해야 할 변수나 자원들을 초기화 하는 코드를 작성

 

소멸자

  • 객체(인스턴스)가 소멸될 때 자동으로 호출되는 함수
  • __del__으로 정의
  • 일반적으로 객체가 점유하고 있는 메모리나 기타 자원들의 해제를 하는 코드 작성
class My Class:
	def __init__(self):
		self.name = "Class"
		print('클래스가 생성되었습니다.', self.name)
        
	def __del__(self):
		print('클래스가 소멸되었습니다.')

c = MyClass()
>>> 클래스가 생성되었습니다. Class
>>> 클래스가 소멸되었습니다.
반응형