개념

python class 간단한 정리

ris 2024. 2. 15. 17:43

오늘은 class에 대한 개념이랑 간단한 정보를 다뤄보려 합니다.

저 스스로 정리하고자 쓴 글이므로 이해하기 어려우실 수 있습니다.

 

class 는 간단히 설명하자면 설계도입니다.

계산기로 예를 들죠.

제가 코드로 계산기 프로그램을 만들려면 기능들이 필요하고 UI도 구현할려면 이미지도 필요하겠죠

그 모든 것을 class란 설계도에 저장해두는 겁니다.

간단히 만들어보겠습니다.

 

  class FourCal:

    def __init__(self, a, b): # 초기화
        self.a = a
        self.b = b
    
    def add(self):
        result = self.a + self.b
        return result

    def sub(self):
        result = self.a - self.b
        return result

    def mul(self):
        result = self.a * self.b
        return result

    def div(self):
        result = self.a / self.b
        return result

c = FourCal(1,4)
result = c.add()
print(result)

 

 

이 코드는 그러면 FourCal이라는 이름을 가진 설명서가 되는 겁니다.

자세히 들어가자면 5개의 기능을 가지고 있는 것이 되겠죠.

저 기능들을 메소드라고 부릅니다.

 

메소드는 클래스 함수라고 합니다.

 

메소드를 살펴보면 __init__ 부분이 다른 것과 다르죠?

__init__은 다른 메소드와 달리 특별한 메소드입니다.

원래 class 내부의 메소드를 호출할 때는 기본적으로 (class 이름).(method 이름)(매개변수) 로 이뤄집니다.

하지만 __init__은 간단하게 (class 이름)(매개변수) 로 사용이 가능합니다.

 

그리고 파이썬에서는 첫번째 매개변수는 무조건 객체가 되는데요.

간단히 설명하자면 첫번째 매개변수는 조립품이 되는 것이겠죠 # 아까 설계도 설명에서 이어집니다.

첫번째 매개변수는 self를 쓰는 것이 관례이지만 다르게 써도 상관은 없습니다. # 하지만 self를 쓰는 것이 예의!

 

* 매개변수는 보통 함수에 투입되는 값을 의미합니다. 앞으로 나올 멤버변수는 클래스 내부에서 선언된 변수를 의미합니다.

 

그리고 왜 객체를 무조건 앞에 써야하냐고 물으실수도 있습니다. 

이것도 간단히 설명하자면 설계도에서 만들어진 조립품에 상품번호를 적어놓는 것과 비슷?한 의미입니다.

# 저도 애매하게 아는지라 잘 아시는 분이시라면 댓글로 설명 부탁드립니다.

조립품끼리 헷갈리면 안되니까요.

 

그리고 왜 class 에서 멤버변수를 초기화해야하는지 궁금하실 수 있습니다.

이걸 설명하려면 메모리 관점에서 설명해야하는데 대충 설명하자면 변수 초기화랑 비슷합니다.

반복문을 작성하다보면 가끔 변수 초기화를 하지 않아 이상한 값이 나올 때가 있습니다.

클래스도 똑같이 멤버변수를 초기화해야 이상한 값이 나오는 것을 방지할 수 있습니다.

그렇기에 초기화하는 것입니다 # 초기화는 습관적으로 익혀두세요.

 

그리고 인스턴스와 객체를 헷갈려하시는 분이 있을까봐 설명드리자면

인스턴스는 클래스로 만든 객체입니다.

a = apple()

여기서 a는 객체, apple()의 인스턴스입니다.

 

다시 코드로 돌아가면 __init__ 메소드에서 a와 b라는 멤버변수를 초기화해주고 다른 메소드에서는 그 값을 가지고 기능에 맞게 값을 리턴하는 것입니다.

 

사실 이게 끝입니다.

어쨌든 정리하자면

 

클래스는 객체를 만들기 위한 설명서

메소드(클래스 함수)는 클래스 내부의 멤버변수를 사용하는 함수

인스턴스는 클래스로 만든 객체

__init__의 특별한 점은 메소드를 클래스와 같이 호출하지 않아도 자동으로 호출된다는 점

 

이정도가 되겠네요.