05의 개발 계발

[TIL] 230328 [Python] Class의 사용목적 과 list 응용 본문

TIL

[TIL] 230328 [Python] Class의 사용목적 과 list 응용

생각하는 코댕이 2023. 3. 28. 23:37
728x90

TIL 학습목표

  • Python 에서 Class를 사용하는 목적을 안다.
  • Class와 list를 활용하여 변수 및 함수 중복을 줄일 수 있다.

1) 문제점 (Problem)

개인과제와 팀과제로 Text RPG 를 만들면서 Class를 사용하게 되었다.

하지만 if문과 while문에 지저분하게 중복된 변수와 함수들을 보면서 Class를 잘 사용하고 있는지 의문이 들었다.

그래서 Class를 사용하는 목적과 활용방법을 다시 생각하고, 탐색하고자 한다. 


2) 시도해본 것들 (Try)

▶Class의 사용목적   |   참고자료

Class(클래스) : 함수와 변수를 포함하는 하나의 모듈로, 만들어둔 모듈과 같은 기능을 하는 객체를 생성할 수 있다.                             ex) 쿠키틀(클래스)과 쿠키(객체)

Class는 미리 만들어둔 변수와 함수를 호출할 수 있는 객체를 만듦으로써, 변수와 함수의 중복을 줄이는데에 목적이 있다.


▶list 응용

list 는 여러개의 요소(item)를 가지고 있다.
그리고 모든 타입의 데이터가 들어갈 수 있다.

즉, 클래스객체와 함수도 들어갈 수 있다.

아래와 같은 list사용법을 '입력값에 따른 실행함수 분류'에 적용해보자.

# 몬스터 리스트
monster = [
    Monster("HTML", 100, 10),
    Monster("CSS", 200, 20),
    Monster("JS", 300, 30),
    Monster("Python", 400, 40),
    Monster("Algorithm", 500, 50),
]

# 랜덤으로 몬스터를 생성한다
random_monster = random.choice(monster)

 


3) 해결 (Solution)

list 를 활용하여 입력값에 따라 실행할 함수를 분류하였다.

        # 동작을 입력받는다
        action = msvcrt.getch()

        if not action in [b"1", b"2", b"3", b"4", b"5"]:

            print("\n정신차리세요! 용사님!")

            continue
		# 입력받은 action에 따라 action_choice 내의 함수가 실행
        player.action_choice(random_monster, action)

 

▲ 실행 파일 ▲

    #################공격선택######################
    def action_choice(self, other, choice):
        action = [
            self.attack,
            self.special_attack,
            self.heal,
            self.defend,
            self.counter,
        ]
        return action[int(choice) - 1](other)

▲클래스 파일▲


4) 알게 된 점  (Learnd)

list 안에 데이터 타입이 아닌 함수와 클래스 객체를 넣는 발상을 처음 알게 되었고, 앞으로 활용도가 많아 질 것 같다.
list 뿐만 아니라 dict의 활용도도 높을 것 같다. 아직 감이 오진 않지만, 알고리즘 문제를 더 풀면서 경험을 쌓아 가야겠다.
이론과 실습의 Gap을 줄여가도록 하자!

728x90