class를 다루는데 어려움이 있어서 한 번, 정리해 보았다.
개요
class calculator1:
def __init__(self, a, b):
self.a = a
self.b = b
def add(self):
return self.a + self.b
def sub(self):
return self.a - self.b
def mul(self):
return self.a * self.b
def div(self):
return self.a / self.b
사칙연산에는 4가지가 있다는 것을 안다.
+
-
*
/
사칙연산을 하는 계산기를 만들어서 기초적인 class를 시작하려 한다.
class를 정의하는 방법:
1. class 이름()을 정의한다.
우리는 caculator1이라고 정의하였다.
(+class들의 공통변수를 정의한다.) 다음 게시물에 사용 예정
2.def __init__(self, a, b)를 정의한다.
이때 self, a, b를 정의하는데 a와 b는 class에서 사용되는 변수이다.
self.a = a
self.b = b
self.a와 self.b를 뭐라고 생각하는 것이 좋을까?
놀이 동산을 가서 자유이용권을 끊으면 어떤 놀이기구든 탈 수 있는 것을 기억할 것이다.
놀이기구 앞에서 자유이용권을 보여줘야 탈수 있는 것도 알 것이다.
def __init__(self, a, b)
class라는 놀이동산안에 def라는 여러가지 놀이기구들이 있는데,
__init__에 a,b를 넣음으로써 a와 b는 놀이 동산에 입장을 하였고
self.a = a
self.b = b
이것을 함으로써,
a와 b는 class안에 모든 def를 이용하는 자유이용권을 끊었다고 생각하면 좋다.
3.이제 사칙연산을 할 수 있게 만들기
def 더하기(self):
return self.a+self.b
class caculator에는 4가지 놀이기구가 있다. add(더하기), sub(빼기), mul(곱하기), div(나누기)
이러한 놀이기구를 타기위해 self가 있는 것이다.
self.a는 class에 넣은 a를 가리키며, self.b는 class에 넣은 b를 가리킨다.
self.a + self.b의 뜻은 맨위에 __init__에 정의한 a와 b를 더한다고 생각하면 된다.
4. class를 실행해보기
정의한 class는 어떻게 불러야할까?
정답은 간단하다.
변수 = class이름()를 하고 __init__에서 self를 제외하고 정의한 변수만큼 넣어야한다.
변수.class내의 함수()를 하면 정의한 class안에 함수를 사용할 수 있다.
실행결과
결과해석:
v1 = calculator1(3, 8)이라고 해서 caculator1이란 class안에 3과 8이 들어갔다.
그다음에는 v1.add()라고 함으로써, caculator1안에 있는 add()라는 함수를 실행하여 두변수의 합을 구하였다.
질문1) 왜 숫자가 2개가 들어가??
v1 = caculator1(3, 8)의 의미를 좀더 살펴보면
def __init__(self, a, b)에서 a, b 라는 2개의 변수를 정의하였기 때문에
class에서 가져올 떄, 2개의 변수를 넣은 것이다.
질문2) add()안에 왜 아무것도 없지??
def add(self)라고 한다음
self.a + self.b를 하였기 때문이다.
a와 b가 self라는 자유이용권 덕분에 add()라는 함수를 이용할 수 있게 된 것이다.
이 4가지 과정을 이용하여 class의 기본적인 틀을 알아보았다.
class에 어려움을 겪는 사람들이 이 글을 보고 이해했으면 좋겠다.
+사실 우리는 self를 간접적으로 보았다.
a = list()
a.append(4)
기본적인 리스트 함수이다.
a에서 list()를 정의하고
a라는 리스트에 원소를 붙일 때 .append(넣고 싶은 원소)를 하는 것을 볼 수 있다.
근데 생각 해볼 것이 있다.
a = 1
a.append(2)
이건 가능한가?? 할 수 없다.
위에 []를 정의했다는 이유로 .append가 가능한것이 의아하지 않은가?
두가지 이유를 들 수 있다.
1. 우리가 쉽게 사용하던 list()는 사실 거대한 class였던 것이다!!
2. 리스트를 선언한 변수에 .append할 수 있는 이유는 self가 있어서 가능한 것이다!
list()라는 거대한 class안에 def append(self, 넣을 변수)가 있어서 가능하다고 생각하면 좋다.
출처) 타입 파이썬! 올바른 class 사용법과 객체지향 프로그래밍 대시보드 - 인프런 | 강의 (inflearn.com)