Python

파이썬을 배워보자!!!{클래스와 객체(2)}

25G 2021. 4. 11. 19:07

안녕하세요~ 접니다 ㅋㅋㅋ 저번 글에 클래스와 객체 1에서는 제가 전반적인 클래스에 대한 기본적인 설명과 문법 정도만 다뤘었는데요! 저번에 보여드리고 말씀드렸던 것들은 어쩌면 클래스란 어떠한 껍데기? 틀? 만 만들었을 뿐이에요 정말 이것들을 사용하려면 결국엔 함수처럼 호출을 해야 하는 거죠

하나의 틀을 만들고 필요할 때마다 그 틀을 사용해서 원하는 모양을 마구마구 찍어내는 것이죠

그래서 오늘은 이 클래스를 사용하는 방법과 인스턴스는 뭔지 객체는 어떤 것인지 아주 간단하게 풀어내 보겠습니다!!!!

네 이번엔 제가 사람의 특징을 가진 틀(class)을 만들어 보았습니다 근데 사람이라고 하면 너무 많은 요소들이 있죠? 그래서 일단 간략하게 풀어내 봤답니다ㅎㅎ 보시면 1번과 7번에 생성자와 클래스 명을 보시면 유추해 볼 수 있듯이 얼굴의 특징을 가진 클래스와 우리 몸이 가진 클래스를 따로 만들었습니다. 얼굴과 몸은 같은 사람에게 있는 것이지만 이것을 하나로 묶어내기엔 두 부분의 특징이나 공통점이 너무 없어서 얼굴 클래스와 몸 클래스를 따로 만들어서 보관한 후에 

14번에 person클래스로 이 두게의 클래스를 묶어서 표현하고 있습니다. 저렇게 만든다면 메서드를 어떻게 만드냐에 따라서 다 향하게 이 생성자를 컨트롤할 수 있겠죠??

 

하지만! 여러분께 보여드리는 것인데 너무 복잡하면 어렵잖아요. 그래서 전 메서드 하나에 모든 변수들을 넣었답니다!. 그리고 사람이 당연히 해야 될 기능들을 메서드에 넣어줬어요(숨쉬기, 말하기) 24를 보시면 print로 출력을 하는데 무엇을 출력하나 봤더니 얼굴 클래스에 눈코입, 몸 클래스에 손가락 발가락 발을 출력하는 기능을 하는 함수(클래스 안에 있으니까 메서드)를 만들어 놨답니다

 

자 여러분 하지만 이것들은 현제 아무런 값도 가지지 않고 아무런 효력도 없는 그냥 빈 껍데기일 뿐입니다. 그냥 이러한 틀만 준비가 된 것이지요!!

 

그래서 이번에 이 클래스와 메서드를 어떻게 사용하는지 간단하게 보여드리겠습니다

자 여러분 여기서부터 사실 이번 글에 핵심입니다 사실 42번 줄 까지는 전부 껍데기에 불과하답니다 결국에 이 메서드와 클래스를 사용하려면 호출을 해야 한다고 했죠?

43번 줄을 보시죠 person1이라는 변수에 Person클래스에 매개변수를(2,1,1,10,10,2)를 담아서 저장하고 있습니다.

이 간단한 한 줄에는 많은 의미가 담겨 있습니다. 

일단 첫 번째로 person1이라는 변수는 이제 변수의 개념을 가지고 있고 다른 말로 "객체"라고 합니다. 이 객체가 Person클래스의 메서드와 생성자들을 모두 사용할 수 있게 되는 개념이라고 생각하시면 조금은 쉬울 것 같습니다.

그리고 클래스를 객체화한 객체들을 종합적으로 아우르는 말이 "인스턴스"인 것이지요

그리고 여기서 한 가지 규칙이 더 나옵니다. 매개변수는 매개변수의 수만큼 선언을 해 주어야 한다는 것입니다.

Person클래스에 6개의 매개변수를 만들었으니 매개변수의 수만큼 선언을 해줘야 한다는 말입니다!! 그래야 컴퓨터가 헷갈리지 않고 그리고 이 클래스의 의도대로 인스턴스를 만들 수 있을 테니까요

 

그리고 이번에 44번째 줄을 보시면 person1.showInfo()라는 소스코드를 볼 수 있으실 겁니다. 43번째 줄에서 person1이라는 "객체"를 만들었습니다. 그럼 이 객체는 Person클래스의 모든 기능과 메서드를 사용할 수 있는 변수인 것입니다.

그래서 "."을 사용해서 이 person1안에 있는 Person클래스로 들어가서 거기서 사용할 수 있는 showInfo라는 메서드를 호출한 것입니다.!

그럼 만약에  위 메서드들 중에 "먹는다"를 호출하고 싶으면 어떻게 하면 될까요>??

person1.eat() 이렇게 하면 제어가 37번에 있는 print("먹는다")가 호출되고 출력이 되는 것이지요!!

 

자 여러분 오늘은 정말 중요한 클래스를 만들고 선언하고 호출하는 것까지 보여드렸습니다.

워낙 어려운 내용이라 제가 글을 싸지른 것인지 똥을 싸지른것인지 헷갈릴 정도로 주저리주저리 글만 많이 썼는데ㅠㅠ 그래도 이 긴 글 읽어주셨다면 정말 감사하고요!

다음에는 이 클래스를 좀 더 효율적으로 핸들링하고 응용하는 방법들을 가지고 와보겠습니다!! 감사합니다