Login

Search

Learn 🇰🇷
2022.10.27 19:17

7.1. 클래스(class)와 인스턴스

Views 69 Votes 0 Comment 0

객체지향 개념이 나타나기 이전의 프로그래밍 방법에서는 프로그램이 어떤 일을 하고 나서, 그다음엔 어떤 일을 하고, 또 그다음엔 뭘 하라는 식으로 컴퓨터가 해야 할 일을 알려주기에 바빴습니다.

그런데 객체지향 프로그래밍(Object-Oriented Programming)에서는 프로그램을 작성할 대상이 되는 실제 세계의 사물(객체)을 그대로 표현하고, 그것들이 어떻게 움직이는지 정해주고 나서야 비로소 그 객체들에게 일을 시킵니다. 객체지향 프로그래밍을 잘 사용하면 보다 좋은 프로그램을 빨리 만들 수 있고, 나중에 수정하기도 편해진다고 합니다. 프로그래밍 언어들이 모두 객체지향적인 것은 아니지만, 요즘에 널리 사용되는 언어 중에는 객체지향을 지원하는 것이 많습니다.

파이썬은 꼭 객체지향적으로 작성하지 않아도 됩니다. 다시 말씀드려서, 앞으로의 강좌를 보지 않으셔도 간단한 프로그램을 작성하는 데 문제가 없다는 것이죠.

하지만 객체지향에 대해 이해하시고 나면 파이썬으로 윈도우 프로그래밍을 하거나, 복잡한 프로그램을 작성하는 데 많은 도움이 된답니다. 또, 다른 프로그래밍 언어를 이해하기도 수월해지지요.

그럼 함께 시작해 볼까요?

 

 

클래스? 인스턴스?

‘가수’라는 단 하나의 사람이나 물건이 실제로 존재할까요? 그렇지는 않습니다. 하지만 우리는 ‘노래를 부르는 사람’을 ‘가수’라고 부릅니다. 이런 것을 일컫는 말이 클래스(class)입니다. 우리말로 옮기기는 쉽지 않지만 ‘부류’라는 의미로 생각하시면 좋을 것 같아요.

다른 예를 들어볼까요?

‘사과’는 클래스이구요, ‘내가 엊저녁에 먹은 사과 다섯 개 중에 두 번째 것’이라고 콕 찍어서 말해주면 실체(instance)로 봐줄만합니다.

‘좋은 집’은 실체일까요? 어느 한 집만을 콕 찍어서 ‘좋은 집’이라고 하기는 힘들 것 같군요. 그럼 ‘우리 집’은 실체일까요? 그건 실체라고 해도 될 것 같네요. 단, 집을 여러 채 가진 사람이 ‘우리 집’이라고 말할 때는 정확히 어느 집을 가리키는 것인지 알 수 없겠죠. 프로그램 작성을 위해 클래스를 설계하다보면 이런 애매한 문제를 만날 때도 있지요.

 

 

파이썬의 클래스

이제 파이썬으로 부류와 실체를 표현해 보겠습니다.

>>> class Singer:                    
...     def sing(self):            
...            return "Lalala~"
...    
>>> singer1 = Singer()                    
>>> singer1.sing()                       
'Lalala~'

  

 

클래스를 만들 때는 위와 같이 class 클래스이름: 형식으로 시작해서 그 다음부터 그 클래스의 성질이나 행동을 정의해주면 됩니다. 둘째 줄에는 함수가 정의되어 있죠? 이와 같이 클래스 내부에 정의된 함수를 메서드(method)라고 부릅니다.

여기서 sing 메서드는 Singer라는 클래스가 하는 행동을 정의하고 있죠. Singer 클래스를 만든 다음에는 taeji라는 객체를 만들었습니다. 인스턴스명 = 클래스()와 같이 만들면 되죠.

그 다음엔 그렇게 만들어진 taeji에게 노래를 시켜봤습니다. Singer 클래스에 sing 메서드를 정의해줬기 때문에 Singer 클래스에 속한 taeji 객체도 sing 메서드를 사용할 수 있지요. 다시 말해서 가수는 노래할 수 있으니까 태지라는 가수도 역시 노래를 할 수 있는 것입니다. 이와 같이 어떤 객체의 메서드를 사용할 때는 객체.메서드 형식으로 해주시면 됩니다.

이번엔 같은 방법으로 리키 마틴 객체를 만들어서 노래를 청해보세요.

>>> ricky = Singer()
>>> ricky.sing()
'Lalala~' 

  

 


List of Articles
No. Subject Author Date Views
Notice Learn What is Python? admin 2024.10.19 81
» Learn 🇰🇷 7.1. 클래스(class)와 인스턴스 admin 2022.10.27 69
23 Learn 🇰🇷 8.1 예외처리(try, except) admin 2022.10.27 41
22 Learn 1.1 Getting into Python admin 2022.11.01 105
21 Learn 1.2 Variable admin 2022.11.03 82
20 Learn 1.3 LIst admin 2022.11.03 33
19 Learn 1.4 Interpreter and Compiler admin 2022.11.05 37
18 Learn 2.1 Iterative statements using while admin 2022.11.19 32
17 Learn 2.2 if-elif-else statements admin 2022.11.22 34
16 Learn 2.3 Iterative statements using for loop admin 2022.11.26 40
15 Learn 3.1 Function admin 2022.11.27 33
14 Learn 3.2 return statement admin 2022.11.29 32
13 Learn 3.3 Global and local variables admin 2024.11.17 38
12 Learn 3.4 Lambda admin 2024.11.17 39
11 Learn 4.1 Data types admin 2024.11.17 33
10 Learn 4.2 String and List admin 2024.11.17 31
9 Learn 4.3 Tuple admin 2024.11.17 35
8 Learn 4.4 Dictionary admin 2022.09.29 34
7 Learn 4.5 Set admin 2024.11.17 37
6 Learn 5.1 What is module? admin 2024.11.17 35
5 Learn 5.2 Import modules admin 2024.11.17 46
Board Pagination Prev 1 2 3 Next
/ 3