__ 가 붙은 기본 함수 매직 펑션
클래스를 생성할때
class UserInfo:
def __init__(self, name): # 클래스를 초기화하는 필수 함수
self.name = name
def user_info_p(self):
print("Name : ", self.name)
# 네임스페이스
# 변수.__dict__
- 네임스페이스 : 객체를 인스턴스화 할 때 저장된 공간
- 클래스 변수 : 직접 사용 가능, 객체(인스턴스) 보다 먼저 생성
- 인스턴스 변수 : 객체마다 별도로 존재, 인스턴스 생성 후 사용
Self
self란?
class SelfTest:
def function1(): # self 가 없다. 클래스 메소드 이다. self가 없어 누구의 메소드인지 모름
print('func 1 called')
def function2(self): # self 있음. 인스턴스 메소드. self에 고유 인스턴스가 자동으로 넘어감
print('func 2 called')
self_test = SelfTest()
self_test.function1() # 오류난다.
self_test.function2()
SelfTest.function1()
클래스 변수, 인스턴스 변수
class WareHouse:
# 클래스 변수
stock_num = 0
def __init__(self, name):
# 인스턴스 변수
self.name = name
WareHouse.stock_num += 1
def __del__(self):
WareHouse.stock_num -= 1
# 자기 네임스페이스에 변수가 없으면 클래스 네임스페이스에서 찾는다.
# self 와 class 네임스페이스에 없으면 에러 발생
# 인스턴스는 del로 메모리 free 가능