클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

파이썬 날개 달기 1 - 클래스 1 : 클래스로 사칙연산 계산기 만들기 본문

프로그래밍 언어/파이썬

파이썬 날개 달기 1 - 클래스 1 : 클래스로 사칙연산 계산기 만들기

huenuri 2024. 9. 6. 21:56

클래스 단원부터는 수업 시간에도 진도를 나가지 않았다. 이렇게 중요한 내용을 왜 배우지 않는지 의문이 들 정도이다. 자바에서는 클래스를 다루었지만 파이썬은 데이터 분석 위주의 수업을 진행하기 때문인 것 같다. 그렇기에 난 수업이 너무나도 지루하고 재미가 없었다. 인공지능도 배우기 전에는 잘 몰랐는데 데이터 분석을 하는 것이 90% 이상이었다.

머신러닝 수업 부터는 수업을 거의 듣지 않고 나만의 공부를 진행하는 편이다. 그리고 Spring 수업도 들어도 무슨 말인지 잘 모르겠고 이해도 되지 않아서 처음 기초 부분만 듣고 요즘은 이 시간에도 자습을 진행한다.

 

때로는 하루 종일 공부를 해도 진도가 별로 나가지 않아서 상심이 될 때도 있다. 수요일이 그랬다. 하지만 그런 날에도 포기하지 말고 공부를 이어가야 한다. 어제의 슬럼프를 통해 배운 점이다. 이제는 다른 방식으로 스트레스를 풀며 좋은 습관을 만들 수 있는 방법을 시작해보기로 했다.

독서나 그림 그리기가 될 수도 있고 좋아하는 운동에 집중하는 것도 좋은 방법일 것이다.


 

 

 

클래스는 왜 필요한가?

클래스는 지금까지 공부한 함수나 자료형처럼 프로그램 작성을 위해 꼭 필요한 요소는 아니다. 하지만 프로그램을 작성할 때 클래스를 적재적소에 사용하면 프로그래머가 얻을 수 있는 이익은 많다.

 

 

계산기 프로그램을 만들며 클래스 알아보기

 

 

이전에 계산한 결과값을 유지하기 위해 result 전역 변수(global)을 사용했다. 그런데 만일 한 프로그램에서 2대의 계산기가 필요한 상황이라면 어떻게 해야 할까? 이럴 때는 함수를 각각 따로 만들어야 한다.

 

 


 

 

 

 

계산기 1의 결과값이 계산기 2에 아무런 영향을 미치지 않는다는 것을 확인할 수 있다. 하지만 계산기가 점점 더 많이 필요해진다면 어떻게 해야 할까? 이 경우에는 클래스를 사용하면 간단하게 해결할 수 있다.

 


 

 

 

 

이 별개의 계산기 cal1, cal2가 각각의 역할을 수행한다. 그리고 계산기의 결과값 역시 다른 계산기의 결과값과 상관없이 독립적인 값을 유지한다. 이렇게 클래스를 사용하면 계산기 대수가 늘어나도 객체를 생성하면 되므로 함수만 사용할 때보다 간단하게 프로그램을 작성할 수 있다.

 


 

 

 

 

클래스와 객체

 

클래스란 똑같은 무언가를 계속 만들어 낼 수 있는 설계 도면(과자 틀), 객체란 클래스로 만든 피조물(과자)를 뜻한다. 클래스로 만든 객체에는 중요한 특징이 있다. 바로 객체마다 고유한 성격을 가진다는 것이다. 동일한 클래스로 만든 객체들은 서로 전혀 영향을 주지 않는다.

 

 


 

 

 

Cookie()의 결과값을 리턴받은 a와 b가 객체이다.


 

 

 

 

 

사칙 연산 클래스 만들기

사칙 연산을 하는 클래스를 만들어보자.

 

 

클래스를 어떻게 만들지 먼저 구상하기


 

 

 

 

 

pass는 아무것도 수행하지 않는 문법으로, 임시로 코드를 작성할 때 주로 사용한다. 여기서 객체 a의 타입은 FourCal이다.

 


 

 

 

 

객체에 연산할 숫자 지정하기

생성된 객체 a는 아직 아무런 기능도 하지 못한다. 이제 더하기, 빼기, 곱하기, 나누기 등의 기능을 하는 객체를 만들어야 한다. 이러한 기능을 갖춘 객체를 만들려면 먼저 사칙 연산을 할 때 사용할 2개의 숫자를 a 객체에게 알려 주어야 한다.

 

 

 

 

매개변수와 a 객체가 이러한 키워드로 전달된다. 파이썬 메서드의 첫 번째 매개변수 이름은 관례적으로 self를 사용한다. 객체를 호출할 때 호출한 객체 자신이 전달되기 때문에 self라는 이름을 사용한 것이다. 물론 self 말고 다른 이름을 사용해도 상관없다.

이것은 파이썬만의 특징이며, 자바에서는 첫 번째 매개변수 self가 필요 없다.

 

 

 


 

 

 

 

 


 

 

 

 

더하기 기능 만들기

2개의 숫자 값을 설정해주었으므로 2개의 숫자를 더하는 기능을 방금 만든 클래스에 추가해보자.

 

 


 

 

 

 

 

곱하기, 빼기, 나누기 기능 만들기

 

 


 

 

 

 

학습을 마치고

클래스 단원 내용이 길어서 사칙 연산을 계산하는 부분까지 학습해보았다. 나머지 생성자부터는 다음 포스트에서 이어서 학습하려고 한다.

파이썬 클래스는 처음으로 학습해보는 내용이라 조금 어려웠다. 그래도 여러 번 반복하다보면 익숙해질 것 같다.