클래스 속성은 클래스 내부의 메서드 외부 공간에 정의하면 됩니다. 인스턴스 속성에 객체명.속성으로 접근하듯이 메서드에서 클래스 속성에 접근할 때는 클래스명.속성으로 접근합니다. 전체 캐릭터 개수를 나타내는 속성을 total_character_cnt라 하고 객체가 하나 새로 생길 때마다 1을 증가시키겠습니다. 그러려면 생성자 내부에 total_character_cnt를 증가시키는 명령어가 있어야 합니다. 다음 코드를 실행해 봅시다.
class Character:
# 클래스 속성
total_character_cnt = 0
def __init__(self, name, hp, ad):
self.name = name
self.strength = hp
self.attack_damage = ad
print('Character 클래스의 객체 =>', self.name)
# 객체 생성 시 클래스 속성 1씩 증가시키기
Character.total_character_cnt += 1
print('현재 캐릭터 개수 =', Character.total_character_cnt)
def information(self):
...
def attack(self, target):
...
def level_up(self):
...
# 검술사, 요정, 도적 객체 생성
swordsman = Character('검술사', 100, 10)
fairy = Character('요정', 60, 5)
thief = Character('도적', 85, 8)