728x90
상속
Class 자식 클래스(부모 클래스):
* 부모 클래스가 갖는 모든 메소드가 자식 클래스에도 담긴다.
* 한 번에 둘 이상의 클래스를 상속받는 것도 가능하나 일반적으로는 둘 이상의 클래스를 상속하지 않는다.
* 부모 클래스가 갖는 메소드와 동일한 이름의 메소드를 자식 클래스가 정의하는 것을 '메소드 오버로딩' 이라고 한다.
메소드 오버로딩을 하면, 자식 클래스에서 정의된 메소드로 부모 클래스의 메소드가 가려진다.(지워진 상태가 아님)
* 메소드 오버로딩 후 자식 클래스의 메소드가 아닌 부모 클래스의 메소드를 호출하고 싶다면 'super().부모클래스의 메소드명' 으로 호출
* 자식 클래스에서 부모 클래스의__init__ 메소드를 호출해 객체 생성 시 객체 내에서 필요로 하는 모든 변수를 초기화해줘야한다.
class GameCharactor: # 게임 속 모든 캐릭터들의 기본 속성
def __init__(self, hp, mp):
self.hp = hp
self.mp = mp
def hitted(self, damage): # 피격당하면 hp 감소
self.hp -= damage
def skill(self, use_mp): # 스킬 사용하면 mp감소
self.mp -= use_mp
def show_status(self):
print("hp : %f , mp : %f" % (self.hp, self.mp))
class Demon(GameCharactor): # 직업 중에 데몬이라는 직업이 있다고 가정
def __init__(self, hp, mp, dp):
super().__init__(hp, mp)
self.dp = dp # 캐릭터의 기본 특성에 데몬만이 갖고 있는 dp를 초기화 시켜줌
def special_skill(self): # 특수 스킬을 쓰면 횟수가 하나씩 감소
self.dp -= 1
def show_status(self):
super().show_status()
print("남은 궁극기 횟수 : %d" % self.dp)
my_demon = Demon(100, 100, 10)
my_demon.hitted(10)
my_demon.skill(12)
my_demon.special_skill() #hp : 90.000000 , mp : 88.000000
my_demon.show_status() #남은 궁극기 횟수 : 9
728x90
'# Programming Language > Python' 카테고리의 다른 글
[Python] 파이썬 정리(12)_스페셜 메소드/연산자 오버로딩 (0) | 2021.07.31 |
---|---|
[Python] 파이썬 정리(11)_Object 클래스에 있는 메소드 (0) | 2021.07.31 |
[Python] 파이썬 정리(9)_파이썬에서 클래스와 객체 (0) | 2021.07.31 |
[Python] 파이썬 정리(8)_문자열 조합(표현식 기반, 메소드 기반) (0) | 2021.04.26 |
[Python] 파이썬 정리(7)_정렬_sort/sorted/enumerate (0) | 2021.04.26 |