본문 바로가기
IVS/Python 프로그래밍

[Python] Class, 상속, 오버라이딩

by 코곰_ 2024. 12. 20.

Class

Class 구성 요소

class Zergling:
    def __init__(self):
        self.hp = 20
        self.mana = 50

    def run(self):
        print("뛴다")
        self.hp -= 1
        self.mana += 1
        
    def show_status(self):
        print(self.hp, self.mana, end = ' ')
  1. 생성자: __init__ 함수
    • 변수 초기화
  2. 필드: 클래스 안에서 사용할 변수
  3. 메서드: 클래스 안에서 만든 함수

 

객체 vs 인스턴스
- 인스턴스: 클래스로 만든 객체

 

 

 

[예제] Coin Game 만들기

    • input_coin(코인 수)
      • 코인은 최대 5개까지 넣을 수 있음
      • 입력된 코인이 10보다 초과될 수 없음
    • play_game()
      • 코인이 1씩 감소

 

class GameMachine:
    def __init__(self):
        self.coin = 0
    
    def input_coin(self, x):
        if(x > 5):
            return
        if(self.coin + x > 10):
            return
        self.coin += x
    def play_game(self):
        if(self.coin < 1):
            print('코인을 넣어주세요')
        self.coin -= 1
        print('게임 재밌다')
    def show_status(self):
        print(f'남아있는 코인은 {self.coin}입니다')

gm = GameMachine()
gm.input_coin(2)
gm.show_status()
gm.play_game()
gm.show_status()

# 출력
# 남아있는 코인은 2입니다
# 게임 재밌다
# 남아있는 코인은 1입니다
  •  

 

input_coin 메서드의 매개변수는 왜 두 개 일까?

메서드의 첫 번째 매개변수 self에는 해당 메서드를 호출한 객체가 자동으로 전달 !

(객체를 호출할 때 호출한 객체 자신이 전달)

 

 

 

 

 

 

상속

상속(Inheritance) = 물려받다 라는 뜻 !

즉, 어떤 클래스를 만들 때 다른 클래스의 기능을 물려받을 수 있도록 함

  • 메서드 추가
  • 부모 메서드 교체

 

Q. 상속은 왜 쓸까?
A. 기존 클래스를 변경하지 않고, 기능을 추가하거나 기존 기능을 변경하려고 할 때

 

 

 

 

 

 

오버라이딩 (Overriding)

부모 클래스의 메서드를 자식 클래스에서 재정의하여 사용

원래 기능을 유지하면서 새로운 기능을 덧붙일 때 사용 !

 

 

 

 

~업데이트 예정..~