공부합시다!/python
14. Class
간서치
2023. 2. 10. 00:15
728x90
함수의 모음 Class
Class를 사용함으로서 함수들의 모아서 재사용할 수 있게 되었지요!
# 1. 클래스 선언 및 self의 이해
# 1.1. 클래스 선언
# 1.2. 클래스 네임스페이스 self
# 1.3. 클래스, 인스턴스 변수
# 1.4. self
# 선언 : 첫글자 대문자, 단어연결시 첫글자 대문자
'''
class 클래스명:
함수
함수
함수
'''
# 예제 1 pass 예외처리됨
class UserInfo:
def __init__(self, name):
self.name = name
def user_info_p(self):
print("NAME: ", self.name)
user1 = UserInfo("Kim")
print(user1.name)
user1.user_info_p()
user2 = UserInfo("Park")
print(user2.name)
user2.user_info_p()
#메모리 번지 확인
print(id(user1))
print(id(user2))
#namespace 출력
print(user1.__dict__)
print(user2.__dict__)
# 클래스, 인스턴스 차이 중요
# 네임스페이스: 객체를 인스턴스화 할 때 저장된 공간
# 클래스 변수: 직접 사용가능, 객체보다 먼저 생성
# 인스턴스 변수: 객체마다 별도로 존재
# 예제2
# self의 이해
class SelfTest:
def function1():
print('function1 called')
def function2(self):
print(id(self))
print('function2 called')
self_test = SelfTest()
#self_test.function1()
self_test.function2() #인스턴스 생성해서 메쏘드 호출
SelfTest.function1()
SelfTest.function2(self_test) # 클래스에서 직접 호출
print(id(self_test))
# 예제 3
# 클래스 변수
class WareHouse:
stock_num = 0
def __init__(self, name):
self.name = name
WareHouse.stock_num += 1
def __del__(self):
WareHouse.stock_num -= 1
user1 = WareHouse('Kim')
user2 = WareHouse('Park')
user3 = WareHouse('Lee')
print(user1.__dict__)
print(user2.__dict__)
print(user3.__dict__)
print(WareHouse.__dict__) # 클래스 네임스페이스, 클래스 변수 (공유)
print(user1.name)
print(user2.name)
print(user3.name)
print(user1.stock_num)
del user1
print(user2.stock_num)
print(user3.stock_num)
728x90