클래스는 파이썬을 배우면서 처음 접한 개념이라서 가장 이해하기 어려운 부분중의 하나였는데요.
클래스를 설명하는 가장 좋은 예시가 아래와 같이 과자틀과 과자틀에 의해서 만들어진 과자들 인거 같습니다.
여기서 과자틀은 클래스이고, 과자들은 객체들로서 클래스(class)란 똑같은 무엇인가를 계속해서 만들어낼 수 있는 설계 도면 같은 것이고(과자 틀), 객체(object)란 클래스에 의해서 만들어진 피조물(과자틀에 의해서 만들어진 과자)을 뜻합니다.
클래스에 의해서 만들어진 객체는 객체별로 독립적인 성격을 갖으며, 과자틀에 의해서 만들어진 과자에 구멍을 뚫거나 조금 베어먹더라도 다른 과자들에는 아무 영향이 없는것과 마찬가지로 동일한 클래스에의해 생성된 객체들은 서로에게 전혀 영향을 주지 않습니다.
클래스를 이용해 프로그래밍을 하면 데이터와 데이터를 조작하는 함수를 하나의 묶음으로 관리할 수 있으므로 복잡한 프로그램도 쉽게 작성할 수 있게 해 줍니다.
파이썬 클래스의 기본형은 아래와 같이, class 클래스명: 으로 정의합니다.
그리고, 파이썬내에서 실행되는 함수는 메서드라고 불리며, 메서등의 첫번째 인자는 self로 시작해야 합니다. 호출 시 호출한 객체 자신이 전달되기 때문에 self라는 이름을 사용하게 된 것이라고 합니다.
class Cookie:
def setdata(self, first, second): # ① 메서드의 매개변수
self.first = first # ② 메서드의 수행문
self.second = second # ② 메서드의 수행문
클래스의 객체를 만드는 방법은 아래와 같이 클래스명뒤에 ()를 넣음으로써 가능하며, 이를 인스턴스라고도 합니다.
a = Cookie()
b = Cookie()
객체를 통해 클래스내의 메서드를 호출하는 방법은 아래와 같이 객체뒤에 도트연산자를 써서 호출할 수 있으며, 아래와 같이 괄호안에 매개변수를 지정함으로써 객체의 변수를 지정할 수 있습니다. 이렇게 인스턴스를 생성해서 객체변수를 저장함으로써 데이터를 용이하게 관리할 수 있습니다.
a.setdata(2, 4)
앞에서도 언급했듯이 각 객체들은 서로에게 전혀 영향을 주지 않기 때문에 여러개의 인스턴스를 생성해서 객체변수를 저장함으로써 데이터를 용이하게 관리할 수 있고, 또한 이 데이터를 이용해 원하는 작업의 메서드를 class내에 추가함으로써 필요한 프로그램을 용이하게 만들수 있습니다.
즉, 클래스를 이용해 데이터와 데이터를 조작하는 함수를 하나의 묶음으로 관리할 수 있다는 것입니다.
더하기 기능 클래스를 이용하여 클래스가 어떻게 이용되는지 좀 더 자세히 알아 보겠습니다.
예시) 더하기 기능 클래스
result = self.first + self.second
return result
생성자
위의 더하기 기능 클래스에서 setdata 메서드는 각 인스턴스의 데이터를 셋팅하는 부분으로서 이부분이 class 수행시 반드시 실행되어져야 하는 부분입니다.
이렇게 객체에 초기값을 설정해야 할 필요가 있을때는 메서드를 호출하여 초기값을 설정하기 보다는 생성자를 구현하는 것이 안전한 방법입니다.
생성자(Constructor)란 객체가 생성될 때 자동으로 호출되는 메서드를 의미하며, 파이썬 메서드명으로 __init__
을 사용하면 이 메서드는 생성자가 됩니다.
다음과 같이 FourCal클래스에 생성자를 추가해 보자.
result = self.first + self.second
return result
클래스의 상속
어떤 클래스를 만들 때 다른 클래스의 기능을 물려받을 수 있는 이를 클래스의 상속이라고 합니다.
클래스를 상속하기 위해서는 다음처럼 클래스명 뒤 괄호 안에 상속할 클래스명을 넣어 주면 됩니다.
class 클래스명(상속할 클래스명)
보통 상속은 기존 클래스를 변경하지 않고 기능을 추가하거나 기존 기능을 변경하려고 할 때 사용하며,
기존 클래스가 라이브러리 형태로 제공되거나 수정이 허용되지 않는 상황이라면 반드시 상속을 이용해야 할 것 입니다.
예시를 통해서 좀 더 자세히 살펴 보겠습니다.
class MoreFourCal(FourCal):
def pow(self):
result = self.first ** self.second
return result
위와 같이 MoreFourCal class를 만들고 FourCal 클래스를 상속하게 되면 FourCal클래스의 모든 기능을 사용할 수 있게 됩니다.
따라서 아래의 경우가 성립이 되어 지는 것이죠.
a = MoreFourCal(4, 2)
a.pow() --> 16
a.add() --> 6
오늘 살펴본 클래스는 프로그램제작시 상당히 많이 사용되는 기본적인 개념입니다. 반드시 예제등을 통해서 익혀두시기 바랍니다.
'주식자동매매' 카테고리의 다른 글
파이썬기초 - CSV 파일 읽고 쓰기 (0) | 2019.03.05 |
---|---|
파이썬기초 - 파일 읽고 쓰기 (0) | 2019.03.04 |
파이썬 기초 - for문 (0) | 2019.03.02 |
파이썬 기초 - If문 (0) | 2019.02.28 |
파이썬 기초 - 변수에 대해서 (0) | 2019.02.27 |