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 = ' ')
- 생성자: __init__ 함수
- 변수 초기화
- 필드: 클래스 안에서 사용할 변수
- 메서드: 클래스 안에서 만든 함수
객체 vs 인스턴스
- 인스턴스: 클래스로 만든 객체
[예제] Coin Game 만들기
-
- input_coin(코인 수)
- 코인은 최대 5개까지 넣을 수 있음
- 입력된 코인이 10보다 초과될 수 없음
- play_game()
- 코인이 1씩 감소
- input_coin(코인 수)
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)
부모 클래스의 메서드를 자식 클래스에서 재정의하여 사용
원래 기능을 유지하면서 새로운 기능을 덧붙일 때 사용 !
~업데이트 예정..~
'IVS > Python 프로그래밍' 카테고리의 다른 글
[Python] Project-2) 파이썬과 Pandas를 사용한 데이터 처리 (3) | 2024.12.20 |
---|---|
[JSON] Project1- 파이썬을 활용한 API 데이터 수집 (1) | 2024.12.18 |
[JSON] Encoding/ Decoding, JSON 파일 파싱하기 (0) | 2024.12.18 |
[JSON] 기본 문법 (2) | 2024.12.18 |
[Python] 리스트, 함수, 딕셔너리, 튜플 (0) | 2024.12.17 |