Coding/Python

[python] class

dodomp0114 2021. 12. 29. 21:46

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