클래스에 대해서 알아보자.
클래스는 무엇인가??
클래스는...파이썬 프로그래밍의 꽃..!!
클래스는 무엇이고 왜 사용하는지 일단 감을 잡아봅시다
일단 계산기를 생각해보면..
계산기에 1이라는 숫자를 입력하고 + 기호를 입력후 2를 입력하면
결과값으로 3을 보여줌
다시 + 기호를 입력후 3을 입력하면 기존의 값 3에 3을 더해 6을 보여줌
즉, 계산기는 이전에 계산된 결과값을 항상 메모리 어딘가에 저장하고 있어야 함.
계산기의 더하기 기능을 파이썬 코드로 구현해보면
result = 0
def adder(num):
global result
result += num
return result
이전에 계산된 결과값을 유지하기 위해 result 라는 전역 변수(global)을 사용
그다음 한번 숫자를 출력 해보자
print(adder(1))
print(adder(2))
1
3
깔끔하게 만든대로 나옴
그런데 한 프로그램에서 계산기 하나가 더 필요한 상황이 발생하면??
그러니까 2개의 계산기가 필요하게 된다면 어떻게 해야할까?
각각의 계산기는 각각의 결과값을 유지해야 하기때문에 위의 함수하나로는
결과값을 유지할 수 없음.
문제해결을 하려면 하나 더 만들면 됨 ㅎㅎ
result1 = 0
result2 = 0
def adder1(num):
global result1
result1 += num
return result1
def adder2(num):
global result2
result2 += num
return result2
만들었으니 아무 숫자나 출력해보면
print(adder1(1))
print(adder1(2))
print(adder2(3))
print(adder2(4))
각각 출력한다
1
3
3
7
각각의 계산기가 서로에게 아무런 영향을 끼치지 않음.
그런데... 계산기가 갑자기 30개가 더 필요해졌다...
그렇다면.. 일일히 전역변수와 함수를 추가할 것임?
30개는 어떻게 만들었다고해도 100개, 1000개가 더필요하다면??
이런 경우를 해결하기 위해 바로 클래스가 필요한것이다
클래스를 본격적으로 배우기 전에 어떤 것인지 맛만 살짝 보면
class Calculator:
def __init__(self):
self.result = 0
def adder(self, num)
self.result += num
return self.result
cal1 = Calculator()
cal2 = Calculator()
print(cal1,adder(1))
print(cal1,adder(2))
print(cal2,adder(3))
print(cal2,adder(4))
실행하면 함수 2개를 만든것과 같은결과!
1
3
3
7
Calculator 클래스로 만들어진 cal1, cal2 라는 별개의 계산기가 각각의 역할을 수행
수행하면서 독릭접인 결과값 유지. cal1, cal2 는 인스턴스라고 부름
계산기가 1000개 더필요하다고해도 쉽게 처리 할 수 있게 됨 ㅎㅎ
대충 맛을 봤다면 이제 클래스의 개념을 한번 잡아봅시다잉~
어린 시절 달고나 뽑기를 해본 적이 있는가?
아저씨가 여러 가지 모형을 찍어주면 ☆ ◇ ♡
측면부터 부셔 먹으면서 원래 모양대로 깨뜨리지 않고 만들어오면
하나 더 주곤했음(난 성공한번도못함)
클래스는 것이 마치 뽑기의 틀과 비슷함.
별 모양의 틀(클래스)로 찍으면 별 모양의 뽑기(인스턴스)가 생성되고
하트 모양의 틀(클래스)로 찍으면 하트 모양의 뽑기(인스턴스)가 나오는셈!!
붕어빵틀(클래스)로 붕어빵(인스턴스)를 만드는 셈이기도 함!
클래스란 무엇인가를 계속해서 만들어낼 수 있는 설계도면 같은것이고
인스턴스란 클래스에 의해서 만들어진 피조물임.
아~~주 기본 클래스의 예를 보면
class Simpe:
pass
위의 클래스는 아무 기능이 없는 껍질뿐인 클래스
하지만 이런 클래스라도 인스턴스를 생성하는 기능은 가지고 있음.
인스턴스는 클래스에 의해 만들어진 객체이고,
1개의 클래스는 무수히 많은 인스턴스를 만들수 있음.
위에서 만든 Simpe 클래스의 인스턴스를 만드는 방법은?
a = Simple()
Simple()의 결과값을 돌려받은 a가 바로 인스턴스
마치 함수를 사용해서 그 결과값을 돌려받는 모습과 비슷
'파이썬 복습' 카테고리의 다른 글
4/19 클래스 (3/4) (0) | 2018.04.19 |
---|---|
4/13 클래스 (2/4) (0) | 2018.04.13 |
4/3 연습문제 (0) | 2018.04.03 |
4/2 파일 읽고 쓰기 (0) | 2018.04.02 |
3/31 사용자 입력과 출력 (0) | 2018.03.31 |