본문 바로가기
C++ 200제/코딩 IT 정보

[파이썬 입문] 클래스 사용법 - 4단계로 마스터

by vicddory 2019. 7. 23.

파이썬으로 클래스 class 사용하려는 분들은 궁금할 겁니다.


"원래 클래스가 뭐지? 객체지향이 뭐지? 생성자? 상속? 함수?

그리고 뭐?"


#파이썬클래스


프로그래밍 언어에서 클래스(clasS)와 객체지향이라는 말을 자주 듣게 되지만 사용법은 어떻게 이해해야 할까요? 클래스를 간단하게 설명하면 처리 단위를 1개로 정의한 것으로 모든 프로그래밍 언어에서 사용되고 있습니다.


이 포스팅은 클래스 사용법이나 생성자, 메소드, 상속 등을 이해하고 싶은 분들을 위해 4단계로 클래스를 설명합니다.

이 포스팅은 이런 분들을 위해 썼습니다.


  • 기본 클래스 만드는 방법을 알고 싶어요
  • 생성자, 메소드, 상속에 대해서도 이해하고 싶어요


클래스에 대해 알기 쉽게 해설하므로, 꼭 참고하세요.

Python 클래스

Python에는 클래스라는 기능이 있습니다. 이 클래스를 이해하기 위해서는 객체 지향이란 무엇인가에 대해서도 알 필요가 있습니다.


객체지향은 기본적으로 객체(물건)로 구성된 프로그래밍 언어를 말하며, Python 클래스 역시 객체를 생성하여 처리할 수 있습니다.


객체 지향에 대해선 아래 포스트를 참고하세요.




Python에서 클래스 만드는 방법 4단계

객체지향 기본을 배우기 위해 실제로 파이썬에서 클래스를 만들어 봅시다.


클래스 기본 구문

Python에서 클래스의 기본 구문은 다음과 같습니다.


1
2
3
class ClassName():
    def __init__(self, ):
         hogehoge
cs


소문자로 "class"를 적고 원하는 클래스 이름을 지정합니다만, 인수는 비워졌습니다. 함수는 "def"로 정의하고 있습니다.


그리고 class 시작 구문의 내부에 "__init__"라고 함수가 정의되어 있습니다. 이 생성자는 클래스 중에서도 중요한 기능입니다.


생성자에 대해서는 다음 장에서 설명합니다.


생성자란

생성자는 "__init__"라는 부분입니다. 생성자는 인스턴스를 만들 때 중요한 적업을 포함합니다.


어떻게 생성하거나 어떤 데이터를 가질 수 있는지 등과 같은 정보를 정의하는 데 필요한 메서드(함수)입니다.


여기서 인수 self를 주의하세요. sefl는 인스턴스 자신을 가리키며, 기본적으로 self 인수는 필수이므로 잊지 않도록 주의하시기 바랍니다.


그럼 실제로 파이썬 클래스를 만들어 봅니다.


1
2
3
4
5
6
class MyClass():
    def __init__(self, message):
        self.value = message
 
myinstance = MyClass("Hello!")
print(myinstance.value)
cs


[실행 결과]


1
Hello!
cs


여기 코드는 생성자의 인수로 self와 message를 지정했습니다. 인스턴스 데이터에 message를 추가하고 싶으므로, value라는 속성(애트리뷰트 attribute)을 추가하고 두 번째 인수 message를 대입한 것입니다.


그리고 인스턴스를 생성하기 위해 인스턴스 대입하는 "변수 이름 = 클래스 이름(인수)"을 호출했습니다. 보시다시피 Hello!라고 표시됩니다.

메소드(함수)란

생성자라는 특별한 멘소드 정의 방법을 소개했습니다. 이번엔 인스턴스의 행동과 행동을 표현하는 정의 방법을 소개합니다.


메소드는 클래스에 정의된 함수입니다. 메소드는 정의된 클래스에서만 호출할 수 있다는 것도 특징입니다.


다음 소스 코드를 참고해주세요.


1
2
3
4
5
6
7
8
9
10
11
12
13
class Example():
 
    def __init__(self, a,b,c):
        self.num1 = a
        self.num2 = b
        self.num3 = c
 
    def print_tot(self):
        tot = self.num1+self.num2+self.num3
        print(tot)
 
myinstance = Example(1,2,3)
myinstance.print_tot()
cs


[실행 결과]


1
6
cs


위의 코드에서는 Example이라는 클래스를 정의했습니다. 예제 생성자와 print__tot라는 메소드만을 포함했습니다.


생성자는 인수에 지정된 a, b, c를 속성 num1, num2, num3에 대입합니다. 그리고 print_tot는 생성된 인스턴스가 갖고 값 3개를 합쳐 출력합니다.


실제로 myinstance를 인수 1, 2, 3에서 만들결과 총 6으로 표시되었습니다.


상속이란

프로그램을 작성하고 클래스를 바탕으로 파생 클래스를 만들고 싶은 경우가 있을 겁니다. 그런 경우 상속을 사용하면 편리합니다.


아래 코드를 살펴봅시다.


1
2
3
4
5
6
7
8
9
10
11
12
class Son():
    def son_func(self):
        print("I am SON")
         
class Daughter(Son):
    def daughter_func(self):
        print("I am Daughter")
 
= Son()
 
s.son_func()
s.dauthger_func()
cs


[실행 결과]


1
2
I am SON
I am Daughter
cs


위 파이썬 소스 코드는 Son 클래스를 바탕으로 Daughter 클래스가 만들어졌습니다. 상속은 대상 자식 클래스의 인수에 부모 클래스를 전달합니다.


상속하고 있으므로, Daughter 클래스의 인스턴스는 자신이 소유하고 있는 daughter_func 호출하는 방법 외에도 Son 클래스의 son_func까지 호출할 수 있습니다.


결과처럼 메시지가 잘 출력되었습니다.

정리

이번에는 Python 클래스의 기본을 소개했습니다.


기억할 점은 이렇습니다.


  • 생성자를 정의할 때 self 인수로 지정하자
  • 메소드는 함수이므로 def 키워드를 사용한다
  • 클래스 기반으로 새로운 클래스 만들 경우 상속


이런 느낌입니다.


그럼 여러분도 이 포스팅을 통해 클래스에 대한 지식을 점점 넓혀보시기 바랍니다.



관련 글

파이썬 클래스 이해하기 - 생성자 소멸자 상속

파이썬 패키지 호환성 확인 사이트

파이썬 파일 읽기 (utf-8 txt) 방법 7가지 예제

[파이썬 리스트] 정수를 모두 제곱하여 출력하기

[Linux pyenv] 파이썬 아나콘다 설치 관리 방법

파이썬 아나콘다3 설치 및 Jupyter Qt Console 사용

댓글