본문 바로가기

컴퓨터공학/파이썬 입문

[노베이스, 취준생을 위한 파이썬] - 11강 클래스

반응형

본 강의 시리즈는 파이썬 입문 및 복습을 위한 강좌입니다. 모든 포스팅은 아래의 링크에서 확인가능합니다!


1강 - 변수와 자료형

2강 - 제어구조 ( if else 문)

3강 - 제어구조 ( for 문)

4강 - 제어구조 ( while 문)

5강 - 함수

6강 - 재귀함수

7강 - 람다 (lambda)

8강 - 문자열, 리스트

9강 - 튜플, 딕셔너리, 세트

10강 - 유용한 라이브러리

11강 - 클래스

12강 - 예외처리


클래스를 처음 접하면 조금 어렵다고 느껴지실 수 있지만, 한 줄로 요약하면 "대표 모델 정의하기" 라고 나타낼 수 있겠습니다. 바로 예시를 보시죠.

클래스 기본

여기 man이라는 class가 있습니다. class는 man이라는 객체(object)를 만듭니다. 이 클래스를 이용해서 우리는 인스턴스(instance) 라는 각각의 사람들을 만들 수 있습니다. 여러 사람을 만들고 싶은데, 각 사람마다 속성들이 다르기 마련인데, 이를 각각 구현해주는 것이 아니라 클래스를 만들어서 편하게 구현할 수 있죠.

 

클래스에는 두가지 함수가 들어가는데, 첫번째로 __init__ 함수는 클래스의 속성을 가르킵니다. 넣고 싶은 속성들을 매개변수로 넣어주면 됩니다. 위의 경우에는 이름, 나이, 스킬을 속성의 기준으로 넣어주었습니다. 첫 매개변수는 반드시 self로 해야됩니다! self는 자신을 지칭합니다.

 

__init__ 에서 매개변수로 받은 여러 속성들을 self의 속성값으로 전달해줍니다. 그리고 해당 속성값들로 man의 고유 함수들을 정의해서 man이라는 클래스를 완성할 수 있습니다. 여기서는 자기소개하는 함수를 넣어봤습니다. self.name 과 같이 self 의 속성값들은 클래스 안의 어느 함수에서나 사용할 수 있습니다. 

 

인스턴스로 속성을 가진 진짜 사람을 만들고 싶으면, 클래스 이름을 위와 같이 적어주고, 매개변수로 속성값들을 전달해주면 됩니다. 그러면 진짜 사람인 me가 생겨나는 것이죠. 이 me 라는 인스턴스는 클래스 man이 가지고 있는 모든 함수들을 가지고 있기 때문에, me.intro를 통해 intro 함수를 실행할 수 있습니다. 그래서 위와 같이 자기소개를 하는 것을 볼 수 있죠!

 

클래스 상속

앞서 클래스가 "대표 모델 정의하기" 였다면, 클래스의 상속은 해당 클래스의 하위클래스로 여러 종류들이 있게되는것으로, 예를 들어 사람 클래스가 있고, 이를 상속받은 유아 클래스, 청소년 클래스, 성인 클래스가 있을 수 있는것이죠. 

 

이렇게 하게 되면, 사람 클래스에서 정의했던 속성과 함수들을 다시 정의할 필요없이 사용할 수 있어 편리합니다. 

young class는 man class를 상속받고 있습니다. 간단하게 () 안에 상속받을 클래스의 이름을 적어주시면 됩니다. 부모 클래스인 man의 매개변수로 name, age, skill이 필요하므로 이를 init에 매개변수로 같이 넣어주고, young 만의 매개변수로 game_name을 추가해주었습니다. 여기서 super().__init__()을 사용함으로써 부모클래스인 man의 속성과 메소드를 모두 가져올 수 있고, 부모 클래스 초기화시에 필요한 name, age, skill을 인자로 전달해주면 됩니다. 

 

여기에 추가적으로 young 클래스의 경우 좋아하는 게임을 소개하는 함수를 추가하였습니다. game 함수에서 보면, 부모 클래스에서 선언되었던 self.name을 바로 사용할 수 있는 것을 확인하실 수 있습니다. 

 

마찬가지로 boy 인스턴스를 만들어 사용하고, boy는 부모클래스의 함수인 intro와 자식 클래스의 함수인 game 모두를 바로 사용할 수 있습니다. 

 

여기까지 클래스였습니다! 다음은 예외처리 강의에서 만나요!

반응형