[Python] 클래스, 객체, 메소드 개념
●클래스와 객체의 개념
파이썬에서의 클래스란 하나의 함수를 통해 다양한 결과 값을 얻을 수 있도록 도와주는 것이다. 아래의 코드 처럼 클래스를 사용하지 않고서는 add 함수를 사용하여 중복된 값을 출력할 수 없다. 따라서 add2를 추가하여 사용해야한다. 또한 result라는 변수를 항상 선언해줘야한다.
result = 0
def add(num):
global result
result += num
return result
result = 0
def add2(num):
global result
result += num
return result
클래스와 메소드, 객체의 관계를 이해하기 위해 아래와 같이 공통적인 이력서 탬플릿이 있다고 가정해보자. 클래스의 개념이 없다면 한사람마다 하나씩 이력서를 만들어야해서 생산성이 떨어질 것이다.

그리고 이러한 이력서 탬플릿을 우리는 한글, 워드 등과 같은 프로그램으로 작성하는데, 위 그림에서는 한글(HWP), 워드(DOC)로 표현하였다. 즉, 한글과 같은 프로그램이 우리의 정보를 이력서에 작성되도록 도와주는 Tool이라고 생각하자. 이러한 프로그램을 객체라고 하고 객체는 하나의 클래스가 여러 입력값을 처리할 수 있도록 도와준다.
아래의 그림에서 resume()는 클래스이고 doc와 hwp는 객체이다.
class resume():
pass
doc = resume()
hwp = resume()
● 클래스 만들기 with 메소드
아래의 코드에서 resume() 클래스를 만들었다. (self의 개념은 다음에 설명) 클래스 아래에 intro라는 함수가 있는데 클래스 하위에 있는 함수를 (메소드)라고 부른다. 이력서의 자기소개, 경력, 학력 등 하나의 항목을 메소드라고 생각해보자.
다음으로 doc와 hwp의 객체를 생성하고 doc.메소드(파라미터), hwp.메소드(파라미터) 값으로 클래스 내의 메소드를 사용하였다. 즉, doc, hwp 프로그램을 사용하여 이력서의 intro 항목을 작성한 것이다.
class resume():
def intro(self, name, age, position):
self.name = name
self.age = age
self.position = position
doc = resume()
doc.intro('Bob', '30', 'Sales Marketing') #메소드 호출
print(doc.name, doc.age, doc.position)
hwp = resume()
hwp.intro('Kate', '20', 'Developer') #메소드 호출
print(hwp.name, hwp.age, hwp.position)
#출력값
Bob 30 Sales Marketing
Kate 20 Developer
요약하자면 이력서 탬플릿(클래스) - 이력서 항목(메소드) - 한글 프로그램(객체) 이고 우리는 우리의 경력을 한글 프로그램을 통해 이력서의 경력란에 기술 하듯, 객체를 통해 클래스의 메소드를 호출하는 것이다.
아직 많이 부족해서 글 내용 중 수정사항이 있거나 추가할 사항이 있으면 비밀댓글 부탁드립니다~~
감사합니다!!!