클래스의 필요성
예시를 통해 클래스의 필요성에 대해 파악해보려고 한다. 다음과 같은 코드가 있다.
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 이다.)
'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 |