파이썬 문법 공부를 할때 변수 연산자 다 쉽게 이해되니까 신나서 진도 쭉쭉 나가는데
느닷없이 나타난 클래스에 막혀 진도를 더이상 나가지 못하는 경우가 많다.
클래스를 인터넷에 검색해보면 붕어빵틀, 빵틀 등의 비유를 드는 설명글이 많다.
왜냐하면 클래스는 비슷한 유형의 객체를 마구마구 만들어낼 수 있는 가이드라인의 역할을 하기 때문이다.
class 붕어빵틀:
def 붕어빵만들기(self,재료, 시간):
self.재료 = 재료
self.시간 = 시간
팥붕 = 붕어빵틀()
팥붕.붕어빵만들기('팥', '10분')
슈붕 = 붕어빵틀()
슈붕.붕어빵만들기('슈크림', '12분')
print("팥붕 재료:", 팥붕.재료)
print("팥붕 시간:", 팥붕.시간)
print("슈붕 재료:", 슈붕.재료)
print("슈붕 시간:", 슈붕.시간)
이 코드는 간단한 클래스 예제이다.
class 붕어빵틀:
def 붕어빵만들기(self,재료, 시간):
self.재료 = 재료
self.시간 = 시간
이 코드에서는 붕어빵틀 이라는 이름의 클래스를 만드는데, 이 클래스에는 붕어빵만들기라는 메소드(클래스에 내장된 함수를 의미함. 함수랑 똑같은데 이름만 다른 것.)가 들어있다.
붕어빵만들기 메소드에는 self, 재료, 시간이라는 파라미터가 포함되어있고, self라는 파라미터를 이용해서 재료와 시간이라는 파라미터의 값을 self에 저장한다.
이게 대체 뭔소린지...
일단 아래에 객체(object)를 만드는 과정을 살펴보자.
팥붕 = 붕어빵틀()
팥붕.붕어빵만들기('팥', '10분')
슈붕 = 붕어빵틀()
슈붕.붕어빵만들기('슈크림', '12분')
이 코드는 팥붕과 슈붕이라는 객체를 만드는 코드다.
붕어빵틀이라는 클래스를 이용해 팥붕과 슈붕이라는 객체를 만들어줬다.
팥붕과 슈붕 객체(object)는 모두 붕어빵틀 클래스를 이용해서 만들었고, 붕어빵틀 클래스의 내용물(붕어빵만들기 메소드)을 그대로 물려받게 된다.
이제 팥붕과 슈붕 객체는 붕어빵틀이라는 클래스의 내용물인 붕어빵만들기 메소드를 실행할 수 있게 된다.
붕어빵만들기 메소드를 실행하는 방법은 쉽다.
객체명.함수(파라미터) 형태로 코드를 작성하면 되는 것.
여기서도
팥붕.붕어빵만들기('팥', '10분')
형태로 코드를 작성해주었고 이 코드의 실행 결과 팥붕이라는 객체에는 재료값이 팥, 시간값이 10분으로 할당된다.
팥붕이라는 객체가 붕어빵틀 클래스와 유사한 구조를 가지지만 팥, 시간이라는 고유한 값을 갖게 되는 것.
마찬가지로 슈붕 객체도 붕어빵틀 클래스와 유사한 구조를 가지지만 슈크림, 12분이라는 고유한 값을 갖게 된다.
object 팥붕:
def 붕어빵만들기(팥붕, 재료, 시간):
팥붕.재료 = '팥'
팥붕.시간 = '10분'
그러니까 이런 형태라고 생각하면 쉽다.
(object라는 문법은 존재하지 않음, 그냥 class 문법과 대치시키기 위해 만든 가상의 문법임)
붕어빵틀이라는 클래스를 이용해 붕어빵틀 클래스와 동일한 형태의 팥붕이라는 객체(object)를 만들고, 그 안에 들어있는 붕어빵만들기 메소드를 이용해 팥붕 객체만의 값(팥, 10분)을 할당하는 것이다.
어느정도 이해가 간다면, print함수를 이용해 팥붕.재료와 슈붕.재료를 출력했을때 어떤 값이 나올지 예상이 갈 것이다.
그리고 실제 출력 결과와 예상이 맞아떨어진다면 이제 파이썬 클래스가 무엇인지 대충 이해가 된 상태일테니 여기저기서 응용하며 클래스 개념에 익숙해지면 좋을 것 같다.
'코딩 > 파이썬' 카테고리의 다른 글
5분 파이썬(2) - 텍스트 에디터 소개 (0) | 2023.04.12 |
---|---|
5분 파이썬(1) - 파이썬 소개 (0) | 2023.04.07 |
[백준 파이썬] 1284번 집 주소 (B3) (0) | 2022.10.06 |
[백준 파이썬] 1267번 휴대폰 요금 (B3) (0) | 2022.10.05 |
[백준 파이썬] 1247번 부호 (B3) (0) | 2022.09.19 |