상세 컨텐츠

본문 제목

[Python 만들면서 배우기04] 만들면서 배우는 Python 정보 출력하기

Python

by donggyu1998 2021. 7. 18. 20:29

본문

반응형

💡 글 작성자는 vscode를 활용하여 Python을 작성하고있습니다.

 

💡 [실행화면]

💡 코드 확인

코드 복사 주소 : https://pastebin.com/KUwjgKnG

class Item:
    # 클래스 생성자 정의
    def __init__(self): # 바로 파이썬에서 특별하게 약속된 메서드 가운데 하나로, 초기화(initialize) 메서드라고도 합니다.
        self._name = None
        self._atk = 0
        self._mtk = 0

    #변수 담기
    #def __init__(self, name, atk, mtk):
    #    self._name = name
    #    self._atk = atk
    #    self._mtk = mtk
    
    # setter
    #@item.setter
    def setName(self, name):
        self._name = name
        
    # getter
    #@property
    def getName(self):
        return self._name

    def setAtk(self, atk):
        self._atk = atk

    def getAtk(self):
        return self._atk

    def setMtk(self, mtk):
        self._mtk = mtk

    def getMtk(self):
        return self._mtk

class Hero:

    def __init__(self):
        self._name = None
        self._items = []

    def getName(self):
        return self._name

    def setName(self, name):
        self._name = name

    def getItems(self):
        return self._items

    def appendItem(self, item):
        self._items.append(item)

def main():
    #item1 = Item("메자이", 0, 80)
    #print(item1.getName())

    #colors = []
#
    #red = 'red'
    #blue = 'blue'
#
    #colors.append(red)
    #colors.append(blue)
#
    #print (colors)
#
    #for color in colors:
    #    print (color)
    
    # 티모 생성
    timo = Hero()
    timo.setName("티모")
    print(timo.getName(),timo.getItems()) # 아이템 아무것도 없음 
    # 출력 -> 티모 []
    print ("아이템 생성 ( 이름 메자이 )")
    item0 = Item() # 객체
    item0.setName("메자이") #세팅
    item0.setAtk(0) 
    item0.setMtk(80)
    
    print ("아이템 생성 ( 이름 무한의대검 )")
    item1 = Item() # 객체
    item1.setName("무한의대검") #세팅
    item1.setAtk(120) 
    item1.setMtk(0)

    print ("티모한테 아이템 append")
    timo.appendItem(item0)
    timo.appendItem(item1)

    print ("----------티모 아이템 정보 출력----------")
    for item in timo.getItems():
        print (item.getName(), item.getAtk(), item.getMtk())
    #item = timo.getItems()[0]
    #print (item.getName(), item.getAtk(), item.getMtk())
    #print(item0.getName(),item0.getAtk(),item0.getMtk()) #읽기

if __name__ == "__main__":
    main()

💡 코드 설명

class 생성자명과 init

class를 생성합니다.

init는 파이썬에서 특별하게 약속된 메서드 가운데 하나로, 초기화(initialize) 메서드라고도 합니다.

여기서 부터 코드는 매우 중요합니다. 어떤 프로그램을 코딩하더라도 같은 패턴으로 사용할 변수를 만들어 놓고 사용합니다. 

    def __init__(self): 
        self._name = None
        self._atk = 0
        self._mtk = 0

class Item이라는 생성자를 만든 후 

아이템에 관련된 이름, 공격력, 마법력의 변수를 지정합니다. 

 

setter, getter

클래스에서 메서드를 통하여 속성의 값을 가져오거나 저장하는 경우가 있습니다.

이때 값을 가져오는 메서드를 getter, 값을 저장하는 메서드를 setter라고 부릅니다.

파이썬에서는 @property를 사용하면 getter, setter를 간단하게 구현할 수 있습니다.

이전에 배운 내용처럼 반환값은 누구 이렇게 지정을 해줍니다.

   # setter
    #@item.setter
    def setName(self, name):
        self._name = name
        
    # getter
    #@property
    def getName(self):
        return self._name

    def setAtk(self, atk):
        self._atk = atk

    def getAtk(self):
        return self._atk

    def setMtk(self, mtk):
        self._mtk = mtk

    def getMtk(self):
        return self._mtk

티모 생성

    timo = Hero()
    timo.setName("티모")
    print(timo.getName(),timo.getItems()) # 아이템 아무것도 없음

우리는 timo라는 이름으로 Hero에 있는 함수들을 이용하여 timo를 설정하고 이름은 setName (getter, setter)를 활용하여 티모라고 지정합니다.

그 후 출력되는 내용은 이름과 아이템입니다. 

 

티모 아이템 전송

    print ("아이템 생성 ( 이름 메자이 )")
    item0 = Item() # 객체
    item0.setName("메자이") #세팅
    item0.setAtk(0) 
    item0.setMtk(80)

item0 이라는 객체를 만든 후 setter, getter를 활용하여 이름, 공격력, 마법력을 설정합니다.

 

우리가 만든 appendItem으로 티모에게 item0객체를 보내줍니다.

timo.appendItem(item0)

 

이 내용을 출력을 해보면 글 첫 번째 사진처럼 출력되는 것을 확인할 수 있습니다.

반응형

관련글 더보기