상세 컨텐츠

본문 제목

[Python] 클래스 변수

Python

by TUZA 2022. 6. 4. 16:33

본문

클래스 변수

: 인스턴스들이 모두 공유받는 변수. 아래 예시를 보면 wolf, shark, dragon 의 몬스터가 존재한다.

각각의 몬스터들이 공통적으로 가지고 있는 특징으로 name, health, attack 이 있다는 점이다.

이를 Monster라는 클래스에서 공유해주고 있다. 즉, Monster 라는 클래스가 클래스 변수의 역할을 하고 있다. 

# 상속
# : 클래스들에 중복된 코드를 제거하고 유지보수를 편하게 하기 위해서 사용.
# 클래스 변수
# : 인스턴스들이 모두 공유받는 변수.

import random

# 부모클래스
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}] 지상에서 이동하기.')

# 자식클래스
class Wolf(Monster):
    pass 



class Shark(Monster):
    def move(self): # 메서드 오버라이딩
        print(f"[{self.name}] 헤엄치기")


class Dragon(Monster):
    # 생성자 오버라이딩
    def __init__(self, name, health, attack):
        super().__init__(name,health,attack) #부모의 생성자를 불러옴.
        self.skills = ("불뿜기","꼬리치기","날개치기")


    def move(self): # 메서드 오버라이딩
        print(f"[{self.name}] 날기")

    def skill(self):
        print(f"{self.name} 스킬 사용 {self.skills[random.randint(0,2)]}")



wolf = Wolf("울프", 1500, 200)
wolf.move()
print(wolf.max_num)

shark = Shark("샤크", 3000,400)
shark.move()
print(shark.max_num)
dragon = Dragon("드래곤", 8000, 800)
dragon.move()
dragon.skill()
print(dragon.max_num)
반응형

'Python' 카테고리의 다른 글

[Python] 패키지  (0) 2022.06.04
[Python] 모듈  (0) 2022.06.04
[Python] 상속  (0) 2022.06.02
[Python] 생성자  (0) 2022.06.02
[Python] 클래스  (0) 2022.06.02

관련글 더보기