본문 바로가기
파이썬/class

Class의 기본

by 인공지능 초년생 2022. 2. 12.

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를 실행해보기

위 사진은 계산기를 정의한다음 3과 8을 집어넣어서 합을 구해 보았다.

정의한 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)