티스토리 뷰
목차
파이썬으로 클래스 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") s = 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가지 예제