반원 블로그

01b. 클래스 기본적인 작성방법 본문

2018~/파이썬 자료구조 알고리즘

01b. 클래스 기본적인 작성방법

반원_SemiCircle 2019. 4. 19. 03:25

※ 클래스 작성이 능숙하시면 굳이 이 내용을 보실 필요는 없습니다. ※

클래스로 객체 구현

우리는 객체(Object)를 프로그래밍을 위해 코드로 구현하며 이 때 클래스(Class)를 사용하게됩니다. 필요한 값과 정보는 속성(Attribute, 클래스 내의 변수)로, 기능 및 행동은 메소드(Method, 클래스 내의 함수)로 작성합니다.

이렇게 만든 클래스는 '틀'에 해당합니다. 이제 이를 찍어내서 생성을 합니다. 마치 붕어빵 틀에서 붕어빵을 찍어내듯, 공장에서 자동차를 찍어내듯, 게임에서 캐릭터를 생성하듯말이죠. 그런데 찍어내는 과정에서 재료가 바뀔 수 있습니다. 붕어빵은 팥 대신 슈크림을 넣으면 슈크림 붕어빵이 될 수 있고, 자동차는 들어가는 엔진모터가, 게임 캐릭터는 닉네임이 다를 수 있습니다.

이것들은 클래스로 무언가를 생성할 때 필요한 재료들이여서 인자라 하겠습니다. 이 인자들은 클래스로 무언가를 만들 당시에 필요합니다. 이 과정은 클래스 생성자에서 진행되며 메소드 init 에서 정의합니다.

클래스로 찍어낸 결과물은 인스턴스(instance)라고 합니다. 글만 봐서는 어렵습니다. 대강 기본적인 구조를 쓰윽 본 뒤 활용 예제를 실습해보세요.

클래스 기본구조

#01classEx.py
##클래스 사용 예제
class 클래스이름:
    #클래스 생성자 정의
    def __init__(self, 인자1, 인자2):
        self.필요한속성1 = 인자1
        self.필요한속성2 = 인자2

    #필요한 메소드 구현
    def 필요한메소드1(self):
        코드구현

    def 필요한메소드2(self):
        코드구현


## 메인 코드 영역

#인스턴스 생성
c1 = 클래스이름(c1의 인자1,c1의 인자2)
c2 = 클래스이름(c2의 인자1,c2의 인자2)

#메소드 사용하여 인스턴스 활용
c1.필요한메소드1()
c2.필요한메소드1()

c1.필요한메소드2()
c2.필요한메소드2()

클래스 활용 예시

상황 : 자라나는 아이들의 키를 관리하는 요정이 작성한 파일

#02ClassExUse
##상황 : 자라는 아이들의 키를 관리하는 요정의 프로그램
class Child:
    #클래스 생성자 정의
    def __init__(self, Child_name, Child_height):
        self.name = Child_name
        self.height = Child_height

    #필요한 메소드 구현
    def getName(self):
        return self.name #이름 정보를 반환

    def getHeight(self):
        return self.height #키 정보를 반환

    def growHeight(self, add):
        temp=self.height #임시 지역변수. 성장전 키값 저장
        self.height += add
        print("성장했습니다.{}->{}".format(temp,self.height)) #성장결과 출력


##메인 코드 영역

#어린이 인스턴스 2개 생성
c1 = Child('Tom',150) #Child_name과 Child_height이 'Tom',150인 어린이 정보를 생성
c2 = Child('Jerry',100) #Child_name과 Child_height이 'Jerry',100인 어린이 정보를 생성

##메소드 사용하여 인스턴스 활용
#1.현재 이름과 키 정보 조회
print("현재 {}의 키는 {}cm 입니다.".format(c1.getName(), c1.getHeight()))
print("현재 {}의 키는 {}cm 입니다.".format(c2.getName(), c2.getHeight()))

#2.키를 성장
c1.growHeight(10) #growHeight 메소드의 매개변수 add값을 10 넣어준다.
c2.growHeight(30) #growHeight 메소드의 매개변수 add값을 10 넣어준다.

#3.현재 이름과 키 정보 조회
print("현재 {}의 키는 {}cm 입니다.".format(c1.getName(), c1.getHeight()))
print("현재 {}의 키는 {}cm 입니다.".format(c2.getName(), c2.getHeight()))

 

위키독스 연재 : https://wikidocs.net/book/2868

Comments