더북(TheBook)

self는 자동으로 전달되지만 name, hp, ad는 직접 값을 전달받아야 하는 매개변수입니다. 따라서 객체를 생성할 때 Character()의 소괄호 안에 name, hp, ad에 해당하는 값(인자)을 넣어줘야 합니다. 객체를 생성하는 코드에 인자를 넣고 실행해 봅시다.

swordsman = Character('검술사', 100, 10)
실행결과
Character 클래스의 객체 생성 => 검술사

이번에는 오류 없이 객체가 생성됩니다. 객체를 만들 때 자동으로 생성자 __init__()이 실행되고, 첫 매개변수 self에 객체 이름인 swordsman이 전달됩니다. 그럼 __init__() 내부에서 self.name = name을 실행할 때 self에는 swordsman이, 매개변수 name에는 ‘검술사’가 저장된 상태입니다. 즉 self.name = nameswordsman.name = '검술사'로 실행되는 것이죠. 동일한 원리로 객체 swordsman 내에 strength, attack_damage 속성을 만들고 각각 100, 10을 저장하게 됩니다. 인스턴스 속성에 값이 잘 저장됐는지 확인해 봅시다.

print(swordsman.name, swordsman.strength, swordsman.attack_damage)
실행결과
검술사 100 10
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.