더북(TheBook)

이렇게 객체별로 속성에 개별적인 값을 저장하려면 생성자(constructor)라는 특별한 메서드를 정의해야 합니다. 생성자는 객체가 생성될 때 자동으로 실행되는 메서드로, 객체별로 속성에 다른 값을 저장할 때 유용합니다. 생성자는 이름이 이미 정해져 있습니다. 앞에서 클래스를 정의할 때 나온 __init__()이 바로 생성자입니다. __init__()을 클래스 내부에서 사용하면 해당 메서드가 생성자가 됩니다.

TIP 앞뒤에 언더스코어(_)가 2개씩 있으니 유의하세요! 언더스코어가 없거나 개수가 맞지 않으면 오류가 발생합니다.

Character 클래스에 생성자를 추가해 봅시다. 생성자를 사용하면 객체 생성과 동시에 인스턴스 속성을 만들 수 있습니다. 가령 검술사라는 객체 생성과 동시에 체력은 100, 공격력은 10으로 설정하는 것이죠. 클래스는 객체가 생성될 때 필요한 속성값을 전달받아야 하므로 _ _init__()에 매개변수가 있어야 합니다. 이름은 매개변수 name으로, 체력은 hp로, 공격력은 ad로 전달받겠습니다. hi() 메서드를 삭제하고 그 자리에 생성자 __init__()을 추가해 봅시다.

class Character:
    def __init__(self, name, hp, ad):
        self.name = name
        self.strength = hp
        self.attack_damage = ad
        print('Character 클래스의 객체 생성 =>', self.name)
    def attack(self, target):
        print(target, '을/를 공격합니다.')
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.