본문 바로가기
파이썬

파이썬(python) 강의 9장 - 객체 지향 프로그래밍 -

by ChocoPeanut 2017. 5. 29.

파이썬(python) 강의 9

- 객체 지향 프로그래밍 -

 

객체 지향 프로그래밍은 Object Oriented Programming으로 객체를 통해 프로그래밍을 동작시키는 방식을 말한다. 앞의 장에서 모듈에 대해서 배웠다. 모듈은 일종의 수납공간과 같은 형태로 우리가 원하는 함수를 모듈이라는 공간에 잘 보관하여 사용하고 싶을 때 사용을 할 수 있게 해주는 도구이다. 이러한 모듈이라는 개념에서 조금 더 다양한 기능을 수행할 수 있게 해주는 것이 바로 객체라는 도구이다. 객체는 classinstance로 이루어져 있다



class는 모듈과 같은 수납공간으로 이해할 수 있다. 하지만 class는 함수뿐만 아니라 연관된 변수 또한 포함하고 있는 공간이다. 우리는 이 class를 바로 사용하지 않고 복제를 하여 사용하게 된다. 복제를 하는 이유는 같은 함수를 사용하지만 다른 변수를 사용할 수 있는 다양한 객체들을 위해서 이다. 쉽게 설명하게 되면 사람을 예시로 객체를 설명해보자. 사람은 팔과 다리, 머리, 몸 등등 구성하고 있는 몸의 구성은 사람들마다 다 같다. 하지만 팔의 길이나 몸의 발달 상황과 같이 개개인마다 다를 수 있는 값들을 가지고 있다. 이를 파이썬으로 생각을 해보면 사람이라는 객체는 팔을 구성하고 다리를 구성하고 하는 함수에 대한 동작은 같지만 이에 대해 지정해주는 팔의 길이나 다리의 길이와 같은 변수들의 값은 다를 수 있다. 따라서 같은 부분은 사용하고 다른 부분은 따로 설정할 수 있게 기본의 틀인 class에서 복제품인 instance를 만들어서 각각의 객체를 선언하고 사용을 하게 되는 것이다. 객체의 선언은 사람에게 이름을 부여하는 것과 같다고 생각하면 된다.



실제로 내장되어 있는 모듈 외에도 내장되어 있는 클래스가 많이 있다. 우리는 이러한 클래스를 활용하여 하나의 객체를 생성하게 되고 우리가 원하는 변수를 사용하여 instance를 구성하게 된다. 하지만 실제로 객체를 제작할 수도 있다. 우리가 원하는 동작을 하는 함수를 가진 class를 만들어서 이에 맞는 객체를 만들어주는 것이다. Class를 정의하는 방법에 대해서 알아보자. 우리는 이 예제에서 계산기의 역할을 해주는 class를 만들고 싶다. 계산기라고 하는 것은 기본적인 동작으로 더하기와 빼기 연산을 진행할 수 있게 만드는 것이다. 그런데 계산기는 정해진 값이 아니라 우리가 원하는 변수에 따라 계산하는 값이 다르게 된다. 하지만 동작하는 방법은 더하기와 빼기로 동일하다. 따라서 class로 만들기에 적절한 예시라고 할 수 있을 것이다. 우선 class를 선언하고 이에 대한 이름으로 Cal을 주어준다. Cal 뒤에 object라는 말이 나오는데 이는 상속 부분에서 나오는 부분이니 여기서는 넘어가도록 한다.


class를 선언할 때에는 생성자라는 것이 존재한다. 생성자는 처음에 객체를 만들어줄 때 변수를 지정해주는 역할을 수행하게 된다. 객체는 시작을 할 때 그에 해당하는 변수를 할당받게 되는데 이에 대한 값을 각각의 객체에 맞게 지정해주는 생성자라는 함수가 따로 존재하게 된다. 파이썬에서 생성자의 선언은 __init__() 이라는 함수를 사용하게 된다. 그런데 파이썬의 함수들은 self라는 매개변수를 모두 가지게 된다. self는 클래스에서 사용하는 변수를 지칭하는 용도로 사용하므로 함수를 정의할 때 매개변수의 가장 앞에는 self라는 값이 들어가게 되고 그 이후로 지정한 값들에 함수의 매개변수 값으로 지정받게 된다. 그래서 class 내의 변수를 지정할 때에는 self라는 값을 사용하여 지정을 하게 된다. 따라서 add라는 함수를 만들 때에도 self라는 매개변수를 정의하게 되고 이를 이용하여 v1v2의 값을 불러오게 된다.


c1이라는 것은 객체를 의미한다. class 이름을 사용하여 그 안에 생성자에 들어갈 값을 넣어준다. 그렇게 되면 c1이라는 것은 Cal이라는 class의 형태를 가진 instance가 되며 v110v210을 의미하는 값으로 들어가게 되며 self 매개변수를 통해 내부의 변수가 지정되게 된다. add라는 함수를 불러오기 위해서는 .(dot)을 이용하여 불러오게 된다. 이후 add라는 함수를 불러오게 되면 내부에 지정된 변수 값을 통해 더하기 연산을 한 결과 값이 나오게 된다.