class ( 클래스 ) 란?
- 각종 모듈, 함수로 이루어져 있는 '틀'
클래스는 공장에서 물건을 만들어내는 '틀'의 개념.
클래스라는 '틀'로 찍어낸 물건을 객체 (object), 또는 클래스의 인스턴스.
( 클래스로 만들어진 객체는 이루어진 속성이나, 부품은 같고 이름이나 색깔만 다릅니다. )
기본 클래스 구조
### class 구조 ###
class example:
commands
클래스 생성시, "self " 라는 객체를 나타내는 매개변수를 사용합니다.
( 새로운 객체를 만들어낼때마다 self에 다른 매개변수를 주면 생성 가능합니다.)
ex)
### class로 사칙연산 계산기 만들기 ###
### 사칙연산 계산기 class 생성 ###
##########################################################
>>> class Calculator:
... def data(self, first, second):
... self.first = first
... self.second = second
... def add(self):
... result = self.first + self.second
... return result
... def sub(self):
... result = self.first - self.second
... return result
... def mul(self):
... result = self.first * self.second
... return result
... def div(self):
... result = self.first / self.second
... return result
##########################################################
### 계산기 만드는 틀(class)로, ob 라는 계산기(object) 만들기 ###
##########################################################
>>> ob = Calculator()
### ob 계산기 생성 후, 사칙연산 데이터 삽입 ###
>>> ob.data(10, 20)
>>> ob.add()
30
>>> ob.sub()
-10
>>> ob.mul()
200
>>> ob.div()
0.5
##########################################################
생성자 ( Constructor )
- 생성자는 객체를 생성해 줄때마다 호출되는 함수입니다.
생성자를 쓰지않게되면 객체를 생성할때마다 필요한 데이터를 대입해주는 함수를 호출해줘야 합니다.
def __init__(self,·····) 형식으로 정의합니다.
##############
### 생성자 ###
##############
###### 생성자 없이 클래스 및 객체 생성 #######
>>> class cons:
... def setdata (self, first, second):
... self.first = first
... self.second = second
... def add (self)
... result = self.first + self.second
... print (result)
>>> a = cons()
>>> a.setdata(10,20)
>>> a.add()
30
#### 생성자 사용하여 클래스 및 객체 생성 ####
>>> class cons:
... def __init__(self,first,second):
... self.first = first
... self.second = second
... def add(self):
... result = self.first + self.second
... print (result)
>>> a = cons(10,20)
>>> a.first
10
>>> a.second
20
>>> a.add()
30
※ 예제에서 생성자를 쓰지 않은 클래스 안, setdata 함수와 __init__ 생성자 매서드와는 이름만 다를뿐 모든게 동일합니다.
상속 ( Inheritance )
- 새로운 클래스를 만들 때, 기존 다른 클래스의 기능 물려받을 수 있게 만드는 것을 뜻합니다.
상속을 사용하는 이유로는 기존 클래스를 변경하지 않고, 기능을 추가하거나 기존 기능을 변경할 때 사용합니다.
( 기존 클래스가 라이브러리 형태로 제공되거나 수정이 허용되지 않는 상황에 용이함. )
############
### 상속 ###
############
>>> class cons2(cons):
... def sub(self):
... result = self.first - self.second
... print (result)
### cons를 상속받은 cons2 클래스로 b라는 객체 생성 ###
>>> b = cons2(100,10)
>>> b.sub()
90
메소드 오버라이딩
- 부모 클래스 (상속해준 클래스) 에 있는 메서드를 동일한 이름으로 다시 만드는 작업을 메서드 오버라이딩 (Overriding) 이라고 합니다.
기존에 생성되어 있는 클래스안에 있는 'add' 메소드를 'cons3' 라는 임의의 클라스에서 오버라이딩 하는 예제를 들어보겠습니다.
##############################
### 오버라이딩 (overriding) ###
##############################
>>> class cons3(cons):
... def add(self):
... result = self.first*2 + self.second
... print (result)
### "over" 라는 객체를 생성하여 오버라이딩된 add 메소드 호출 ###
>>> over = cons3(100,200)
>>> over.add()
400
'Coding > Python' 카테고리의 다른 글
[python] random 모듈 (0) | 2021.12.09 |
---|---|
[python] 입출력 / 파일 읽고 쓰기 (0) | 2021.12.02 |
[python] 함수 란? (0) | 2021.12.01 |
[python] for 문 / ( range, enumerate, zip 함수 ) (0) | 2021.12.01 |
[python] while 문 ( break, continue ) (0) | 2021.11.26 |