Coding/Python

[Python] 4. 클래스

Anhwa 2023. 8. 21.
728x90

초보 개발자들에게 클래스(class)는 넘기 힘든 장벽과도 같은 존재이다. 그래서 오늘은 도대체 클래스가 무엇인지, 클래스가 왜 필요한지 매우 기초적인 것부터 차근차근 함께 알아보자.

 

클래스는 왜 필요한가?

프로그래머들이 가장 많이 사용하는 프로그래밍 언어 중 하나인 C 언어에는 클래스가 없다. 이 말은 굳이 클래스가 없어도 프로그램을 충분히 만들 수 있다는 뜻이다. 파이썬으로 잘 만든 프로그램을 살펴봐도 클래스를 사용하지 않고 작성한 것이 매우 많다. 즉, 클래스는 지금까지 공부한 함수나 자료형처럼 프로그램 작성을 위해 꼭 필요한 요소는 아니다.

하지만 프로그램을 작성할 때 클래스를 적재적소에 사용하면 프로그래머가 얻을 수 있는 이익은 많다.

 

클래스를 가장 잘 설명해 주는 것이 아래에 있는 그림이다.

  • 과자 틀 = 클래스
  • 과자 틀로 찍어 낸 과자 = 객체

클래스로 만든 객체에는 중요한 특징이 있다. 바로 객체마다 고유한 성격을 가진다는 것이다. 과자 틀로 만든 과자에 구멍을 뚫거나 조금 베어 먹더라도 다른 과자에는 아무런 영향이 없는 것과 마찬가지로 동일한 클래스로 만든 객체들은 서로 전혀 영향을 주지 않는다.

 

class Cookie:
	pass

a = Cookie()
b = Cookie()

Cookie()의 결괏값을 리턴 받은 a와 b가 바로 객체이다. 마치 함수를 사용해서 그 결괏값을 리턴 받는 모습과 비슷하다.

 

더보기

객체와 인스턴스의 차이

클래스로 만든 객체를 ‘인스턴스’라고도 한다. 그렇다면 객체와 인스턴스의 차이는 무엇일까? 이렇게 생각해 보자. a = Cookie()로 만든 a는 객체이다. 그리고 a 객체는 Cookie의 인스턴스이다. 즉, 인스턴스라는 말은 특정 객체(a)가 어떤 클래스(Cookie)의 객체인지를 관계 위주로 설명할 때 사용한다. ‘a는 인스턴스’보다 ‘a는 객체’라는 표현이 어울리며 ‘a는 Cookie의 객체’보다 ‘a는 Cookie의 인스턴스’라는 표현이 훨씬 잘 어울린다.

 

setdata 메서드의 매개변수
def setdata(self, first, second):   # 메서드의 매개변수
    self.first = first              # 메서드의 수행문
    self.second = second            # 메서드의 수행문
    
    
    
a = FourCal()
a.setdata(4, 2)

그런데 뭔가 좀 이상하지 않은가? setdata 메서드에는 self, first, second 총 3개의 매개변수가 필요한데 실제로는 a.setdata(4, 2)처럼 2개의 값만 전달했다.

그건 다음 그림을 보면 이해할 수 있다.

파이썬 메서드의 첫 번째 매개변수 이름은 관례적으로 self를 사용한다. 객체를 호출할 때 호출한 객체 자신이 전달되기 때문에 self라는 이름을 사용한 것이다. 물론 self 말고 다른 이름을 사용해도 상관없다.

 

상속

상속(Inheritance)이란 ‘물려받다’라는 뜻으로, ‘재산을 상속받다’라고 할 때의 상속과 같은 의미이다. 클래스에도 이 개념을 적용할 수 있다.

 

예를 들어 같은 포카칩이라도 오리지널맛과 어니언맛이 자세하게는 다르지 않은가?

이처럼 큰 틀은 같고 세세한 부분들이 다르다면 새로운 클래스를 만드는 것이 아니라 상속을 통해 쉽게 변경할 수 있다.

더보기

상속 기능은 왜 쓰는 걸까?

보통 상속은 기존 클래스를 변경하지 않고 기능을 추가하거나 기존 기능을 변경하려고 할 때 사용한다. ‘클래스에 기능을 추가하고 싶으면 기존 클래스를 수정하면 되는데 왜 굳이 상속을 받아서 처리해야 하지?’라는 의문이 들 수도 있다. 하지만 기존 클래스가 라이브러리 형태로 제공되거나 수정이 허용되지 않는 상황이라면 상속을 사용해야 한다.

 

 

오늘은 최대한 쉽게 클래스에 대해 설명을 해보려 노력을 했습니다. 그럼에도 모르는 부분이 있다면 댓글로 알려주시면 설명해 드리겠습니다.

 

이로써 파이썬을 간단하게 살펴봤습니다. 파이썬을 공부하실 때 참고가 됐으면 좋겠네요

'Coding > Python' 카테고리의 다른 글

[Python] 3. 함수  (0) 2023.08.21
[Python] 2-3. 제어문(for문)  (0) 2023.08.21
[Python] 2-2. 제어문(while문)  (0) 2023.08.17
[Python] 2-1. 제어문(if문)  (0) 2023.08.17
[Python] 1. 자료형  (0) 2023.05.18

댓글