[Python] 기초 개념: 클래스

프로그래밍의 개념클래스=개념

사람이 생각하는 방식으로 프로그램을 구상하려면 클래스가 필요합니다.

클래스(Class)

  • 클래스는 변수와 함수를 가질 수 있는 추상화된 개념입니다.
  • 추상화되어있다는 것은 구체적이지 않거나 실체가 없다는 의미입니다. 어떤 개념이 아직 구체화·실체화 되기 전에는 클래스(Class)이고, 실체화가 되면 객체(Object) 또는 인스턴스(Instance) 라고 부릅니다.
    • 예를 들면, 우리 주변에는 많은 ‘산’이 있습니다. 그렇지만 ‘산’이라는 것은 그 자체로 특정한 존재를 가르키는 것은 아닙니다. 그저 개념일 뿐입니다. 실체화된 ‘산’은 ‘지리산’일 수도 있고, ‘한라산’일 수도 있습니다.
  • 아래의 예를 통해 클래스와 객체(또는 인스턴스)의 관계를 이해할 수 있습니다.
    • 클래스 : 객체(또는 인스턴스)
    • 개념 : 실체
    • 산 : 지리산
    • 사람 : 유재석

클래스의 중요성

  • 프로그래밍에서 클래스가 왜 중요할까요?
    • 그것은 우리의 생각이 추상화된 ‘개념’에 기초해서 이뤄지기 때문입니다.
    • 프로그래밍에 클래스를 도입하면 평상시에 생각하는 것처럼 개념에 기반해서 프로그램을 구상할 수 있습니다.
    • 우리는 함축적으로 생각하는데 매우 익숙합니다.
      • 예를 들어, ‘먹는다’는 개념은 매우 추상적인 개념입니다. 밥을 먹을 때와 핫도그를 먹을 때, 아이스크림을 먹을때와 게장을 먹을 때의 행동은 매우 다릅니다. 아마 동작 단위로 구분해보면 거의 같은 행동이라고 생각하기 어려울 겁니다.
      • 하지만 우리는 매우 과감하게도 그것들을 그냥 다 ‘먹는다’고 생각해버립니다.
  • 처음 프로그래밍을 접한 사람이 프로그래밍 언어의 문법을 알아도 프로그램을 짜기가 어려운 이유는 컴퓨터가 하는 모든 동작을 하나하나 구체적으로 지시해주어야 하는데 익숙하지 않아서 입니다.
    • 만약 우리가 모든 동작을 하나하나 명령해야만 한다면 제대로 된 일을 할 수 없을 것입니다.
    • 이와 관련해서 tvN에서 만든 영상이 있는데, 3:35초부터 4:27까지 보시길 권합니다.

요즘 초등학생은 다 배운다는 새 필수과목 ‘코딩’의 정체

클래스의 특징

  • 클래스는 변수와 함수를 가질 수 있습니다.
  • 클래스에 속한 변수를 속성(attribute)이라고 부르고, 클래스에 속한 함수를 메소드(method)라고 부릅니다.
  • 클래스가 가진 변수와 함수를 이용하여 우리가 원하는 동작을 지시할 수 있습니다.
    • 그럼 우리와 가장 친숙한 개념 중의 하나인 ‘사람’을 클래스로 만들어서 특정한 작업을 지시해 봅시다.
  • 클래스는 class 명령어로 생성합니다.
class Person:
  def __init__(self, name, age, hobby):
    self.name = name
    self.age = age
    self.hobby = hobby
    self.job = '무직'

  def get_a_job(self, job):
    self.job = job

  def introduce(self):
    print("저는", self.name, "입니다.")
    print("나이는", self.age, "세이고, 취미는", self.hobby, "입니다.")
    if self.job != '무직':
      print("직업은", self.job, "입니다.")
    else:
      print("직업은 없습니다.")
  • 우리는 Person 클래스를 만들었습니다.
  • Person 클래스는 ‘사람’의 개념을 프로그램으로 구현한 것입니다.
  • Person 클래스는 이름(name), 나이(age), 취미(hobby), 직업(job) 변수를 속성으로 가집니다.
    • 저는 이런 속성이 사람을 나타내는 주요한 특징이라고 생각한 겁니다.
  • Person 클래스는 취업하기(get_a_job) 함수와 자기소개하기(introduce) 함수를 가지고 있습니다.
    • 즉, 제가 만든 사람은 취업을 하고, 자기소개를 할 수 있습니다.
pjs = Person('박지성', 39, '생각하기')
pjs.get_a_job('축구선수')
pjs.introduce()

print()

rhj = Person('류현진', 33, '군것질')
rhj.get_a_job('야구선수')
rhj.introduce()
  • 저는 ‘사람’ 개념을 클래스로 구현하고, 박지성과 류현진을 Person 클래스를 통해 실체화하였습니다.
  • 클래스는 그야말로 무엇이든 될 수 있기 때문에, 사람 뿐만 아니라 무엇이더라도 설계하고 구현해서 프로그램에 활용할 수 있습니다.

위 프로그램들을 실행해보려면 아래 파일을 Google Colab 사이트에서 불러오면 됩니다.

Python_Basic_Class.ipynb