[Python]Class 는 왜 필요한가?

2021. 1. 19. 17:32·SW개발/Python

클래스의 필요성

 

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

 

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
'SW개발/Python' 카테고리의 다른 글
  • [Python]if __name__ == "__main__" 란?
  • [Python]모듈이란?
  • [Python]split, join 함수
  • [Python]lambda 함수
Leffe_pt
Leffe_pt
개발자로서 성장하면서 배워온 지식과 경험을 공유하는 공간입니다.
  • Leffe_pt
    Leffe's tistory
    Leffe_pt
  • 전체
    오늘
    어제
    • 분류 전체보기 (307)
      • SW개발 (303)
        • 코딩테스트 (172)
        • 개발이야기 (23)
        • IT 용어 (17)
        • Python (22)
        • Django (46)
        • Flask (2)
        • Database (1)
        • SQLAlchemy (0)
        • Javascript (5)
        • Linux, Unix (3)
        • JAVA (2)
        • Spring (10)
      • 회고 (4)
      • 사진 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    g
    트리 #AVL #알고리즘 #자료구조
    컨트리뷰터
    플레이스토어
    어플리케이션
    배달비 공유
    라이프 스타일
    배공파용
    django
    배달
    오픈소스
    Contributor
    음식
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Leffe_pt
[Python]Class 는 왜 필요한가?
상단으로

티스토리툴바