SW개발/Python

[Python]Class 는 왜 필요한가?

클래스의 필요성

 

예시를 통해 클래스의 필요성에 대해 파악해보려고 한다. 다음과 같은 코드가 있다.

 

result = 0

def add(num):
	global result
    result += num
    return result
    
print(add(3))
print(add(4))
# 결과
3
7

 

위의 코드는 계산기의 더하기 기능을 구현한 코드이다. 하지만 2대의 계산기가 필요한 경우에는 add 함수 하나만으로는 결과값을 유지할 수 없다. 그렇기 때문에 add1, add2 와 같이 여러 개의 함수가 필요할 것이다. 

이렇게 되면 계산기가 3, 5 이런식으로 많이 필요하게 되면 중복되는 코드는 점점 많아지고 지저분해질 것이다.

이런 경우에 클래스의 사용을 통하여 간단하게 해결할 수 있다.

 

class Calculator:
	def __init__(self):
    	self.result = 0
       
    def add(self, num):
    	self.result += num
        return self.result
        
cal1 = Calculator()
cal2 = Calculator()

print(cal1.add(3))
print(cal1.add(4))

print(cal2.add(2))
print(cal2.add(3))
#결과

3
7
2
5

 

계산기1, 2 의 역할을 정확히 수행하는 결과를 얻을 수 있다. Calculator 클래스로 만든 계산기 cal1, cal2 를 파이썬에서는 객체라고 부른다.

클래스를 사용하면 계산기 대수가 늘어나더라도 객체를 생성하기만 하면 무한히 계산기의 수를 늘릴 수 있다.

이러한 경우에서 클래스를 활용하여 중복되는 코드를 줄일 수 있고 각 객체들은 서로 영향을 미치지 않는 효과 또한 얻을 수 있다.

 

 

생성자 - 객체가 생성될 때 자동으로 호출되는 메서드

 

파이썬 메서드 이름으로 __init__ 를 사용하면 이 메서드는 생성자가 된다. 예시 코드를 보면서 설명해보겠다.

 

def __init__(self, first, second):
    self.first = first
    self.second = second

 

메서드 이름을 __init__ 으로 설정했기 때문에 생성자로 인식하여 객체가 생성되는 시점에 자동으로 위의 코드를 호출한다.

따라서 first, second 값을 전달하면서 객체를 생성하면 자동으로 객체이름.first, 객체이름.second 에 해당하는 값을 할당할 수 있게 된다.

(파이썬 메서드의 첫 번째 매개변수 이름은 관례적으로 self 를 사용한다. 객체를 호출할 때 호출한 객체 자신이 전달되기 때문에 self 이다.)

 

728x90

'SW개발 > Python' 카테고리의 다른 글

[Python]if __name__ == "__main__" 란?  (0) 2021.01.20
[Python]모듈이란?  (0) 2021.01.20
[Python]split, join 함수  (0) 2020.11.23
[Python]lambda 함수  (0) 2020.11.22
[Python]map, filter 함수  (0) 2020.11.21