본문 바로가기
Programming/Python

[Python] 파이썬 상속 오버라이딩 / 클래스 변수

by prinha 2025. 1. 31.
728x90
반응형

 

import random

# 1. 메서드 오버라이딩 -> 부모클래스를 자식클래스가 상속하여 재정의
# 2. 클래스 변수 -> 인스턴스들이 모두 공유하는 변수(공개변수)

# 부모클래스
class Monster :
    max_num = 1000 #클래스 자체의 변수
    def __init__(self, name, health, attack) :
        self.name = name
        self.health =  health
        self.attack = attack
        Monster.max_num -= 1 # 인스턴스를 사용할 때마다 변수값 감소
    def move(self) : 
        print(f"[{self.name}] : 지상에서 이동하기")

# 자식클래스1
class Wolf(Monster) :
    pass # 클래스 그대로 사용

# 자식 클래스2 
class Shark(Monster) :
    def __init__(self, name, health, attack) : # 생성자 오버라이딩
        super().__init__(name, health, attack) # 부모의 생성자 상속 super()
        self.skill = ("불뿜기", "꼬리치기", "날개치기") # skill은 불변값이므로 튜플 사용
    def move(self) :
        print(f"[{self.name}] : 헤엄치기") 
    def skills(self) :
        print(f"[{self.name}] : 스킬 사용 -> {self.skill[random.randint(0,2)]}") # 랜덤 모듈 사용

# 인스턴스 생성
wolf = Wolf("울프", 800, 90)
print(Monster.max_num)
shark = Shark("상어", 500, 80) 
print(Monster.max_num)

# 함수 호출
wolf.move()
shark.move()
shark.skills()
728x90
반응형