클래스는 쉽게 말하자면 와플을 만드는 "와플 메이커"라고 비유할 수 있다.
클래스를 이용하면 와플을 쉽게 찍어낼 수 있다.
여기서 한번 더 생각해보자. 함수로도 와플을 충분히 찍어낼 수 있을 것 같은데, 왜 클래스를 사용할까?
바로, “객체”를 정의하고 만들기 위한 변수와 메서드들의 집합이기 때문이다.
즉 클래스는 함수와는 다르게 변수들과 함수들을 모을 수 있는 집합이기 때문이다.
그럼 여기서 말하는 객체는 무엇일까?
와플 틀을 이용해 만들어진 하나하나의 와플을 의미한다.
각자 만들어진 와플은 서로 영향을 끼치지 않는다.
예를들어 와플메이커를 이용해 와플을 10개 만들었는데, 첫번째 와플을 반 먹었다고 해서 나머지 9개의 와플들의 반이 사라지지 않는다.
클래스의 객체가 소프트웨어에 실체화 된 것을 뜻한다.
이렇게 말하면 이해하기 어려우므로 아래 예제에서 정리해보자.
아까 말한 와플메이커를 간단히 구현해보겠다.
class Waffle:
def bake(self):
print('와플을 굽습니다.')
strawberry_waffle = Waffle()
strawberry_waffle.bake()
# 출력 : 와플을 굽습니다.
와플 메이커(class)을 이용하여 strawberry_waffle 이라는 객체를 생성했다.
그리고 Waffle 클래스의 메서드 bake를 이용하여 와플을 구웠다.
strawberry_waffle
은 Waffle
이라는 와플 틀, 즉 클래스에 의해 만들어졌으므로 “객체”라고 한다.strawberry_waffle
은 Waffle
의 “인스턴스”라고 한다.인스턴스는 “관계 중심으로 표현” 할 때 사용함.
특정 객체가 어떤 클래스의 객체인지 표현해주려고 사용하는 말!
bake
가 메서드이다.self는
”외부 호출 및 내부 함수에서 해당 변수들을 사용할 수 있게 만들어주는 것”