반응형
Class란?

- Class: 인스턴스(객체)를 만들 수 있는 틀

- 인스턴스: Class로 만들어진 객체

 

예를 들어 A라는 학생이 크리스마스가 되어 주변 지인들에게 감사의 마음을 담아 쿠키를 만들어 선물을 준다고 해 봅시다. 한 명에게 단 하나의 트리 모양의 쿠키를 만들어준다면 반죽을 만들고 칼로 대충 모양을 만들어 쿠키를 금방 완성할 수 있을 것입니다. 하지만 A는 20명의 사람들에게 10개씩 쿠키를 나누어 주고 싶어 합니다. 이때, 칼로 일일이 수작업하여 만든다면 오랜 시간이 걸리겠죠? 이때 트리 모양 쿠키 틀을 구입하여 반죽 위에 찍어서 쿠키를 만든다면 칼로 하는 것보다 더 빨리, 많이, 똑같은 모양으로 예쁘게 만들 수 있습니다. 

 

이때 트리 모양 쿠키 틀Class 이며

쿠키 틀로 만든 과자를 인스턴스라고 할 수 있습니다.

 

 

class와 객체 만들기
# 클래스 만들기
class 클래스이름:
      변수 또는 함수 입력

#클래스는 속성(변수)들과 동작(함수)들을 가질 수 있습니다.      

# 객체 만들기
객체명 = 클래스이름()

##클래스에 함수 만들기##
class 클래스 이름:
     def 함수이름(self):  #※클래스 안의 함수의 매개변수는 self가 꼭 필요합니다.
         프로그램

#객체의 함수 호출방법
객체변수명.함수명()

※여기서 잠깐!※

클래스 안의 함수를 만들 때 self를 꼭 넣어주셔야 합니다.

self를 안 적으면 오류가 나서 클래스 작동이 제대로 되지 않기 때문입니다.


class 예제

위의 내용을 이용해서 쿠키의 모양을 알려주는 class를 만들어 볼까요?

cookie라는 이름의 class를 만들어 shape(모양)을 속성으로 가지고 쿠키 틀에 따라 

"저는 shape 모양의 쿠키입니다^0^"를 출력하는 클래스를 만들어봅시다.

#class예제

# 쿠키 클래스 만들기
class cookie:
    shape = " "
    def say(self):
        print("저는 %s 모양의 쿠키입니다^o^"%self.shape)

#쿠키 클래스의 객체 만들기
first_cookie = cookie()

#쿠키 클래스의 shape속성에 접근하여 쿠키모양을 알려주기
first_cookie.shape = "트리"

#쿠키 클래스의 함수 호출하기
first_cookie.say()

- 결괏값 : 저는 트리 모양의 쿠키입니다^o^

 

위와 같이 first_cookie.shape의 내용을 세모, 동그라미 등으로 바꿔주고

first_cookie.say() 함수를 호출하면 "저는 세모/동그라미 모양의 쿠키입니다^o^"의 결괏값을 얻을 수 있습니다.

 

상속

class는 상속이 가능합니다.

자식 class가 부모 class의 변수, 함수 등을 물려받아 자식 class에서 부모 class의 변수를 바꾸거나 함수를 호출하여 사용할 수 있습니다.

 

예제로 부모 class인 도우dough(반죽) class를 만들고 부모 클래스 안에 반죽의 재료가 되는 변수(madeof)를 생성합니다. 그다음 child(자식)클래스를 만들어 부모 클래스를 상속받아

저는 ~로 만든 반죽입니다. (부모 class 함수호출)

저는 ~로 만든 쿠키입니다. (부모 class의 변수 호출)

위와 같은 문장을 출력하는  class를 만들어 실행해보도록 하겠습니다.

 

# dough 클래스를 상속받아 child 클래스를 만듭니다.
class child(dough):
    def hello(self):
        print("저는 %s로 만든 쿠키 입니다."%self.madeof)
        
# child(상속) class 선언
wheat = child()
#속성 설정
wheat.madeof = "밀가루" #부모 class 인 dough 클래스 속성
#부모 class인 dough의 함수 실행
wheat.intro() 
#자식 class인 child의 함수 실행
wheat.hello()

- 결괏값 : 저는 밀가루 반죽 입니다.

             저는 밀가루로 만든 쿠키 입니다.

 

첨부파일

 

위에 나온 모든 class 관련 예제는 아래의 주피터노트북(ipynb) 파일을 다운받아 실행할 수 있습니다.

Class_example.ipynb
0.00MB

 

참고자료

class에 대해 더 알고 싶은 것이 있으면

'점프 투 파이썬- 클래스'를 참고하시길 바랍니다.


마무리

오늘 Class에 대해 알아보았는데요

앞으로 python 함수를 사용할 때 class를 이용하여 더욱더 효율적으로 코딩하시길 바랍니다.

질문 댓글로 주저 말고 달아주세요! 언제나 환영입니다 :-D

 

 

반응형

+ Recent posts