본문 바로가기

코딩/파이썬

5분 파이썬(10) - 클래스(feat. 클래스 쉽게 이해하기)

반응형

클래스 개념은 코린이들에게 끝판왕 같은 느낌입니다.

 

변수, 자료형 같은거 배울땐 코딩이 쉽게 느껴지다가

반복문, 조건문 배울땐 코딩이 적성에 맞는 것 같고 막 재밌고 그렇습니다.

함수까지 배우면 조금 어렵지만 해결했다는 성취감에 평생 코딩 하겠다고 다짐하게 되죠.

하지만 클래스를 배우기 시작하면 혼란스러워집니다.

 

클래스...이 클래스가 도대체 뭐길래 코딩 공부를 어렵게 만드는걸까요?

 

수많은 사람들이 클래스를 붕어빵틀에 비유합니다.

붕어빵틀에 반죽을 붓고, 팥이나 슈크림 등을 기호에 따라 넣어줍니다.

붕어빵을 다 구워내면, 생긴건 같은데 속에 들어있는 내용물이 다른 붕어빵이 탄생합니다.

 

클래스도 마찬가지입니다.

클래스를 선언하고, 고유한 데이터를 넣어주면 전체적인 틀은 동일하지만 고유한 데이터를 가진  서로 다른 객체들이 탄생합니다.

 

예제를 한번 보죠.

class 붕어빵틀:
    def 붕어빵만들기(self,재료, 시간):
        self.재료 = 재료
        self.시간 = 시간

팥붕 = 붕어빵틀()
팥붕.붕어빵만들기('팥', '10분')

print("팥붕 재료:",팥붕.재료)
print("팥붕 시간:", 팥붕.시간)

'붕어빵틀'이라는 클래스에는 '붕어빵만들기'라는 메소드가 있습니다.

그리고 '붕어빵틀' 클래스를 이용해 '팥붕'이라는 객체를 선언할 수 있습니다.

여기서 메소드란 클래스 안에 들어있는 함수를 의미합니다.

그리고 클래스로 만들어낸 객체를 '인스턴스'라고 합니다.

즉, '메소드 == 함수'이고, '객체 == 인스턴스' 입니다.

 

객체를 선언했으니 객체를 사용해야겠죠?

팥붕.붕어빵만들기('팥','10분')

위 코드가 '팥붕'객체에 들어있는 '붕어빵만들기'메소드를 호출하는 코드입니다.

매개변수로 '팥'과 '10분'이라는 데이터를 넣어주었는데, 이 데이터가 '재료', '시간'이라는 변수에 할당됩니다.

 

그런데 클래스에서 '붕어빵만들기' 메소드를 선언할때 매개변수를 3개 만들어줬죠?

재료, 시간 매개변수는 알겠는데 'self'라는 매개변수는 이해가 잘 안갑니다.

 

여기서 self는 생성된 '객체'를 의미합니다.

메소드를 호출할때는 메소드 앞에 객체도 붙여서 함께 호출해야 하는데, 이 객체명이 self자리에 들어갑니다.

self.재료 = '팥'

팥붕.재료 = '팥'

위 두 줄의 코드는 '팥붕' 객체에서 동일하다는 뜻입니다.

 

그리고 각 객체가 갖고있는 고유한 데이터를 저장하는 변수를 변수를 '객체변수' 라고 부릅니다.

여기서 '재료'와 '시간'이라는 변수가 바로 객체변수입니다.

 

class 붕어빵틀:
    def 붕어빵만들기(self,재료, 시간):
        self.재료 = 재료
        self.시간 = 시간

팥붕 = 붕어빵틀()
팥붕.붕어빵만들기('팥', '10분')

슈붕 = 붕어빵틀()
슈붕.붕어빵만들기('슈크림', '12분')

print("팥붕 재료:",팥붕.재료)
print("팥붕 시간:", 팥붕.시간)
print("슈붕 재료:",슈붕.재료)
print("슈붕 시간:", 슈붕.시간)

자 이번에는 '슈붕' 객체도 만들어봤습니다.

'슈붕' 객체에는 '슈크림'과 '12분'이라는 데이터를 전달해주었습니다.

 

'슈붕' 객체는 '팥붕' 객체와 생긴건 동일하지만 '재료', '시간' 객체변수가 갖고있는 데이터는 다릅니다.

 

클래스를 이용해서 슈붕, 팥붕 객체를 만들어보니 왜 클래스를 붕어빵틀이라고 부르는지 이해가시나요?

 

여기까지의 강의내용은 유튜브에서도 확인하실 수 있습니다.

https://youtu.be/fdTFb6AM4JA

 

반응형