객체 지향 언어를 이야기할 때 항상 따라오는 것이 클래스(Class)입니다. 파이썬 역시 객체 지향 언어(Object-Oriented Programming, OOP)이며 프로그래밍을 하다 보면 클래스가 많이 사용됩니다. 이전 글에서 함수에 대해 알아보았는데 이런 함수 등을 하나로 묶어 놓은 것이 클래스라고 생각하시면 될 것 같습니다.
객체는 속성을 지니고 있으며 클래스를 생성함으로 그 안에 묶인 함수 등은 객체가 됩니다. 이렇게 만들어진 객체를 클래스의 인스턴스(Instance)라고 말합니다.
1. 클래스(Class)
클래스를 선언할 때 다음과 같은 형식을 사용합니다.
class 클래스명( ) :
def _init_(self, 매개변수1, 매개변수2, ..., 매개변수n) :
코드1
def FuctionA(self, 매개변수A1, 매개변수A2, ..., 매개변수An) :
코드A
def FuctionB(self, 매개변수B1, 매개변수B2, ..., 매개변수Bn) :
코드B
:
:
def FuctionZ(self, 매개변수Z1, 매개변수Z2, ..., 매개변수Zn) :
코드Z
class 클래스명( ) : 는 클래스를 지정한 클래스명으로 선언합니다. 이후에 클래스에 포함되는 코드들은 들여쓰기하여 작성하며 클래스 이름은 보통 대문자로 시작합니다.
def _init_(self, 매개변수1, 매개변수2, ..., 매개변수n) : 는 초기화하는 함수를 정의합니다. 매개변수에서 가장 처음에는 self가 사용되며 이는 자기 자신을 참조할 때 사용됩니다. 반드시 이름을 self로 사용하지 않아도 되며 이럴 경우 가장 맨 앞에 있는 매개변수가 self의 역할을 합니다. 함수 선언 시 def를 입력하고 다음 함수명을 사용함으로 함수를 선언합니다. 매개변수는 필요한 만큼 입력하여 사용할 수 있으며 필요 없을 때는 생략 가능합니다. 또한, 초기화 함수 역시 생략 가능합니다.
클래스의 인스턴스를 객체로 선언하는 방법은 다음과 같습니다.
객체명 = 클래스명(인수1, 인수2, ..., 인수n)
2. 클래스 상속
클래스를 새로 작성할 때 모든 코드를 새롭게 작성하여도 되지만 기존에 이미 생성되어 있는 클래스에 필요한 함수들이 있다면 생성되어 있는 클래스를 이용하여 작성하는 것이 편리합니다. 이를 상속이라 합니다. 부모님께 재산을 물려받는 것을 상속이라 말하는데 이 경우 생성되어 있던 클래스가 부모 클래스가 되고 새로 작성하는 클래스는 자식 클래스가 됩니다.
이렇게 부모 클래스를 상속하게 되면 부모 클래스의 객체를 자식 클래스도 사용할 수 있게 됩니다. 그런데, 이때 부모 클래스의 객체명과 동일하게 자식 클래스에 객체를 선언하게 되면 메서드 호출 시 자식 클래스에서 정의한 객체가 호출됩니다. 이와 같은 경우를 메서드 오버라이딩(Method Overriding)이라 말합니다.
자식 클래스에서 부모 클래스의 객체를 호출할 때는 부모 클래스명.객체명( ) 또는 super( ).객체명( )을 사용하여 호출합니다.
클래스를 상속할 때 다음과 같이 작성합니다.
class 자식 클래스명(부모 클래스명) :
코드
3. 예제를 통해 확인하기
주피터 노트북을 실행하시고 New-Python3를 클릭하여 코드 창을 여신 후 다음 코드를 입력합니다.
class Cal :
def add (self, a, b):
self.result = a + b
return self.result
def min (self, a, b):
self.result = a - b
return self.result
def multi (mul, a, b):
mul.result = a * b
return mul.result
def divid (div, a, b):
div.result = a / b
return div.result
class Pow(Cal) :
def power (self, a):
self.result = a * a
return self.result
cal = Pow()
cal.multi(2,5)
먼저, 클래스 Cal을 선언합니다. (class Cal :)
클래스 Cal에는 add, min, multi, divid 함수가 인스턴스로 있습니다.
그리고, 클래스 Pow를 선언하면서 클래스 Cal을 상속(class Pow(Cal))하였습니다. 그리고, 함수 power를 인스턴스로 입력하였습니다.
cal이라는 이름으로 Pow 클래스의 인스턴스를 객체로 선언하였습니다.(cal = Pow())
cal.multi(2,5)는 클래스 Pow의 부모 클래스인 Cal의 multi함수에 인수 2와 5를 전달합니다. 그리고, 2 곱하기 5의 결괏값인 10을 출력합니다.
추가로 다음과 같이 입력하고 결과를 확인해보시면 함수의 결괏값들이 화면에 출력됩니다.
cal.power(2) → 결과 : 4
cal.add(1,4) → 결과 : 5
'엑셀 > With Python' 카테고리의 다른 글
설치없이 웹에서 Google Colaboratory를 이용하여 자유롭게 파이썬을 코딩하기 (0) | 2022.03.28 |
---|---|
파이썬 내장 함수에 대해 알아보기 (0) | 2021.12.01 |
파이썬 함수 및 지역 변수와 전역 변수에 대해 알아보기 (0) | 2021.11.30 |
파이썬 출력 명령어 print 함수에 대해 알아보기 (0) | 2021.11.26 |
파이썬 반복문과 조건문에 대해 알아보기 (0) | 2021.11.24 |