여러 명의 사람들을 직업에 따라 구분한다고 생각해보자.
세상에 존재하는 직업을 크게 구분하자면 학생, 직장인, 자영업자로 구분할 수 있을 것이다.
이렇게 큰 분류에 따라 객체들을 구분해줄 수 있는 개념을 Class라고 한다.
또한 이런 Class는 객체와는 다르게 실존하지 않는다는 특징을 가진다. (개개인의 학생은 실존하는 사람이지만, 학생이라는 개념은 개념으로만 존재하고 실존하지 않는다는 점을 생각해보자)
이와 같은 Class를 파이썬에서 정의하기 위해서는 구문 앞에 class를 선언해주어야 된다.
class Car:
pass
또한 class 뒤에 나오는 class의 이름은 첫글자를 대문자로 써서 정의해주는 것이 일반적이다. 문장을 클래스 이름으로 쓸 때에는 각 단어의 앞글자를 대문자로 써서 이어서 붙여준다.
예시) SomeReallyLongClassName
클래스가 정의되면 정의된 클래스에 아래와 같이 객체들을 포함시켜 실체화 할 수 있다.
hyundai = Car()
bmw = Car()
클래스에는 클래스에 포함된 객체에 요소들을 부여해 줄 수도 있다. 위 예시의 Car 의 경우에는 각 자동차를 특정할 수 있게 만들어주는 Maker, 모델명, 마력 등이 요소가 될 수 있을 것이다.
클래스 안에 아래와 같이 "init" 메소드를 활용해서 요소를 부여할 수 있다. (클래스에서 사용하는 함수는 메소드라고 부른다)
class Car:
def __init__(self, maker, model, horse_power):
self.maker = maker
self.model = model
self.horse_power = horse_power
앞서 언급한 요소는 Maker, 모델명, 마력 세개밖에 없는데, self 라는 요소가 맨 앞에 parameter로 등장한 것을 알 수 있다. 이 self는 클래스의 실체, 즉 클래스에 포함될 각각의 객체를 뜻한다. 따라서 함수 구문에 self.maker 등 으로 나타나는 부분은 객체명.요소명 = 요소 와 같은 식으로 요소에 포함시키라는 것으로 이해할 수 있다.
이제 각 객체를 요소와 함께 클래스에 포함시켜 보자
hyundai = Car("현대", "제네시스", 500)
위와 같이 객체명 = 클래스명(요소1, 요소2, 요소3) 과 같은 형태로 클래스에 객체를 요소와 함께 포함시킬 수 있다.
요소를 포함시키는 "init" 메소드 말고 특정한 액션을 취하게 하는 메소드도 클래스에 추가할 수 있다.
class Car:
def __init__(self, maker, model, horse_power):
self.maker = maker
self.model = model
self.horse_power = horse_power
def honk(self):
return "빠라바라빠라밤"
위의 정의된 honk 메소드는 아래와 같이 사용할 수 있다.
hyundai = Car("현대", "제네시스", 500)
hyundai.honk()
> "빠라바라빠라밤"
객체명.메소드명 을 통해 특정 메소드를 실행시킬 수 있는 것을 확인할 수 있다.