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