메서드는 클래스의 행위를 표현하는 것으로 클래스 내의 함수로 볼 수 있다. 파이썬에서 메서드는 크게 인스턴스 메서드(instance method), 클래스 메서드(class method), 정적 메서드(static method)가 있다.
가장 흔히 쓰이는 인스턴스 메서드는 인스턴스 변수에 엑세스할 수 있도록 메서드의 첫번째 파라미터에 항상 객체 자신을 의미하는 "self"라는 파라미터를 갖는다.
#메소드 이용 유닛 생성 및 데이지 파괴 구현
# 유닛 생성 클래스
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))
# 공격 유닛 생성 클래스
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))
firebat = AttackUnit("파이어뱃", 50, 16) #유닛을 생성
firebat.attack("5시") # 5시 공격
firebat.damaged(20) # 20 데미지 받음
firebat.damaged(40) # 40데미지 받고 hp없어서 파괴
#출력값
파이어뱃 : 5시 방향으로 적군을 공격 합니다 [공격력은 16]
파이어뱃 : 20 데미지를 입었습니다.
파이어뱃 : 현재 체력은 30 입니다.
파이어뱃 : 40 데미지를 입었습니다.
파이어뱃 : 현재 체력은 -10 입니다.
파이어뱃 : 파괴되었습니다.