오늘은 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__의 특별한 점은 메소드를 클래스와 같이 호출하지 않아도 자동으로 호출된다는 점
이정도가 되겠네요.
'개념' 카테고리의 다른 글
PHP의 세션에 대하여 (1) | 2024.12.20 |
---|---|
SOP(Same Origin Policy) 설명 (1) | 2024.12.01 |
[파이썬 문법] 클래스(class) (2) | 2024.11.20 |
소켓(Socket) 통신 정리 (0) | 2024.11.19 |
python string(문자열) 정리 (0) | 2024.02.15 |