티스토리 뷰

목차

    반응형

    파이썬으로 클래스 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 사용

    반응형