코드를 작성하고 실행하면 유닛들이 생성됩니다. 클래스 하나로 서로 다른 유닛 3개를 만들었는데, 이렇게 만들어진 유닛들을 객체(object)라고 합니다. 즉, soldier1, soldier2, tank는 객체이고, 붕어빵도 객체입니다. 그리고 이렇게 만들어진 객체를 클래스의 인스턴스(instance)라고 합니다. 즉, soldier1, soldier2, tank 객체는 Unit 클래스의 인스턴스이고, 붕어빵은 붕어빵 틀의 인스턴스입니다.
TIP | 객체와 인스턴스는 사실 같은 개념입니다. 객체를 만드는 것은 결국 클래스의 인스턴스를 만드는 것입니다. 보통 객체를 단독으로 부를 때는 객체로, 클래스와 연결지어 부를 때는 인스턴스로 표현합니다.
그림 9-2 클래스와 객체, 인스턴스의 관계
지금까지 클래스와 관련 있는 내용을 여럿 다뤘는데 간략히 소개하고 넘어간 부분은 뒤에서 하나씩 살펴보겠습니다. 여기서는 클래스가 무엇인지 개념만 정확히 알고 넘어가도 충분합니다.
정리하면, 클래스는 서로 관련 있는 변수(인스턴스 변수)와 함수(메서드)들의 집합입니다. 게임에서 보병과 탱크는 모두 이름, 체력, 공격력이 있습니다. 이는 유닛들의 공통 속성이므로 하나의 틀, 즉 클래스로 정의할 수 있습니다. 클래스 안에는 메서드를 여러 개 정의할 수 있으며, 각 메서드의 첫 번째 전달값 위치에는 self를 넣어야 합니다. __init__() 메서드는 클래스에 필요한 값을 전달받아 self로 클래스의 인스턴스 변수를 정의합니다.