클래스의 개념을 이해하기 위해서는 우선 객체가 무엇인지 알아야한다.
객체란, 쉽게 말해 데이터가 담긴 플라스틱 박스이다. 이때, 데이터는 모든 형태를 의미한다. (부울, 정수, 실수, 문자열, 데이터구조, 함수, 데이터프레임)
아래 그림과 같이 17이라는 정수를 갖는 플라스틱 박스가 존재하고 이는 객체이다. 이러한 객체에 a 라고 적힌 포스트잇을 붙여주면 객체에 a라는 변수를 할당하게 되는 것이다. (객체의 데이터 타입에 따라 mutable 또는 immutable한 객체인지 판단 가능)

클래스는 앞에서 말한 플라스틱 박스 (객체)를 만드는 틀이라고 생각할 수 있다. 예를 들어, string은 'cat', 'duck'과 같은 문자열 객체를 만드는 내장된 클래스다. 파이썬에는 리스트, 딕셔너리 등을 포함한 다른 표준 데이터 타입을 생성하는 많은 내장 클래스가 있다.
아래 예시는 youtube 온라인 강의에서 발췌한 것이다.
Class Unit:
def __init__(self, name, hp, damage):
self.name = name
self.hp = hp
self.damage = damage
print('{0} 유닛이 생성'.format(self.name))
print('체력 {0}, 공격력 {1}'.format(self.hp, self.damage))
marine1 = Unit('마린', 40, 5)
tank = Unit('탱크', 150, 35)
클래스에서 가장 헷갈린 개념이 생성자 (constructor)와 인스턴스 (instance)이다.
위의 예시에서 init()은 생성자로써 객체를 초기화한다. (이 부분에 대한 이해가 완벽히 되지 않음 ㅜㅜ)
그리고 marine1, tank와 같이 (self, name, hp, damage) 매개변수에 ('마린', 40, 5)와 같은 인자를 넣어준 것을 인스턴스라고 한다.
처음 시작하는 파이썬, '나도코딩' Youtube 참조