클래스와 객체 생성하기
- 클래스는 붕어빵 틀에 비유하곤 합니다.
- 클래스의 기본형식으로 class 키워드 뒤에 클래스명을 적고 콜론을 붙입니다.
- 클래스 안에는 필요한 함수를 정의 하는데 클래스 안에 정의한는 함수를 메서드라고 합니다.
- 메서드 안에 정의한 변수를 인스턴스 변수라고 합니다.
class 클래스명:
def 메서드명(self,전달값1, 전달값2):
실행할 명령 1
실행할 명령 2
게임 소개
- 세 종족 사이에 전쟁을 그린 게임입니다.
- 유닛을 최대한 빠르게 많이 만들어 적을 궤멸시키는 게임입니다.
- 종족은 보병, 탱크, 전투기 와 같은 유닛을 생성합니다.
유닛)
class Unit:
def __init__(self, name, hp, damage):
self.name = name
self.hp = hp
self.damage = damage
print("{0} 유닛을 생성했습니다.".format(self.name))
print("체력 {0}, 공격력 {1}".format(self.hp, self.damage))
soldier1 = Unit("보병", 40, 5)
soldier2 = Unit("보병", 40, 5)
tank = Unit("탱크", 150, 35)
공격유닛)
class AttackUnit:
def __init__(self, name, hp, damage):
self.name = name
self.hp = hp
self.damage = damage
def attack(self, location):
print("{0} : {1} 방향 적군을 공격합니다. [공격력 {2}]".format(self.name, location, self.damage))
def damaged(self, damage):
print("{0} : {1}만큼 피해를 입었습니다.".format(self.name, damage))
self.hp -= damage
print("{0} : 현재 체력은 {1}입니다.".format(self.name, self.hp))
if self.hp <= 0:
print("{0} : 파괴됐습니다.".format(self.name))
코드 설명
& 객체와 인스턴스
- 클래스 하나로 서로 다른 유닛 3개를 만들었는데, 이렇게 만들어진 유닛들을 객체라고 합니다.
- 위와 같은 객체들을 클래스의 인스턴스라고 합니다.
(soldier1, soldier2, tank 객체는 Unit 클래스의 인스턴스 입니다.)
& 생성자
- Unit 클래스에 __init__() 메서드를 정의 했는데 파이썬에 이를 생성자라고 합니다.
- 생성자는 사용자가 따로 호출하지 않아도 객체를 생성할 떄 자동으로 호출되는 메서드 입니다.
& 인스턴스 변수
- 메서드에 정의한 변수를 인스턴스 변수라고 하며 self와 함께 사용합니다.
- Unit클래스에서는 name, hp, damage가 인스턴스 변수 입니다.
- self.name과 같은 형식으로 전달값을 받아 정의 합니다.
& 메서드
- 메서드는 클래스 내부에 정의한 함수로 클래스 안에 여러개를 만들 수 있습니다.
- 전달값 부분에 첫 번째로 self를 넣습니다.
- 메서드 안에서 self. 으로 인스턴스 변수에 접근 할수 있습니다.
'학습단 > Python 학습단' 카테고리의 다른 글
3주차 완료입니다. (0) | 2023.07.21 |
---|---|
9-2장 클래스(게임 만들기2) (0) | 2023.07.21 |
8-2장 파일 입출력 (0) | 2023.07.19 |
8장 입출력 (0) | 2023.07.18 |
7-2장 함수 호출하기+실습문제 (0) | 2023.07.17 |