반응형
클래스 변수
- 클래스 이름 공간에 생성, 모든 인스턴스에 공유
인스턴스 변수
- 인스턴스 이름 공간에 생성, 인스턴스마다 독립
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
>>> 클래스가 소멸되었습니다.
반응형