본문 바로가기

COMPUTER SCIENCE/Python

[Section 3] 데이터 타입의 이해 _ 클라쓰(Class)

파이썬 목차 보기

 

[Intro] 파이썬 미리보기

* 파이썬과 라이브러리 설치하기 파이썬과 라이브러리 설치하기 1. 파이썬이란? 파이썬은 고급 프로그래밍 언어로, 다양한 윈도즈에서 동작 가능합니다. 그리고 파이썬은 비영리 재단이 관리하

hookspedia.tistory.com

0. INTRO

파이썬에서는 클래스라는 유용한 코드가 존재한다. 이 코드는 코드 간의 분리와 연결에 유용하며 코드끼리의 연결에 관해서라면 클래스를 사용하는 편이 적합하다. 물론 객체 지향 프로그래밍을 통해서도 같은 기능을 하는 코딩을 클래스 구조 없이 구현 가능하다. 그럼에도 클래쓰가 유용한 이유를 간접적으로 언급하자면, 클래스는 공장에서 찍어내는 듯한 코딩으로 비유할 수 있겠다.

1. 클래스 자료형 선언하기

클래스의 이해에 앞서 먼저 클래스 자료형을 다음과 같이 선언해보자.

 

예시 코드:

class name:

    명령문

    ...

 

name이라 적힌 부분이 자료형의 이름이 된다. 이는 사용자 임의로 설정해줄 수 있으며, 뒤따르는 코드의 형태는 마치 이전에 배운 함수와 같다. 위의 명령문에는 어떤 코드가 와야 될까? 클래스 자료형을 이해한다면, 어떤 코드가 와야 될지 감이 올 것이다. 

2.  클래스 자료형의 구조 _ 방법(method)과 속성(attributes)

클래쓰 자료형은 다음과 같은 구조를 가지고 있다. 아래의 그림에서 방법과 속성은 어떤 의미를 가지고 있을까?

 

클래쓰 자료형 구조

 

방법과 속성을 다음의 카운트 예시 코드를 통해서 이해하자. 아래의 예시 코드는 1부터 10까지 카운트하고 출력하는 코드이다.

 

예시 코드:

a=0
for i in range(10):
    a+=1
    print(a)

 

코드 결과:

 

1부터 10까지 카운트 출력하기

 

위의 예시 코드에서 a 변수는 정수형태이며, 카운트 기능을 위해서 반복문 for와 덧셈을 이용하였다. 이를 클래스 형태로 구현하면, 방법은 반복문과 덧셈이 되고 변수의 타입이 특성이 되는 것이다. 이 방식으로 자료 형태를 클래스로 선언하면, 임의의 변수에 함수를 호출하는 것이 가능하다. 이를 이용하여 카운트 기능을 하는 프로그램을 클래스 자료형을 통해서 아주 간단히 찍어내는 것이 가능하다. 

 

그렇다면, 실제로 카운트 기능을 하는 클래스 자료형을 만들어보자.

3.  카운트 기능의 클래스 예시

 

예시에 앞서 'self' 코드에 대해 알아보자. 'self' 코드는 사용자가 정의한 함수의 객체를 의미한다. 예를 들어, 다음과 같은 코드에서 'cc'라 명명한 함수는 객체를 참조하여 10까지 카운트하는 방법(method)을 제시하는 것이다.

 

예시 코드:

class Count:
    def cc(self):
        for i in range(10):
            self.a +=1
            print(self.a)
        return self.a

 

하지만 이 코드의 실행은 오류를 동반한다. 왜냐하면 클래스의 선언에 있어 속성 부분은 변수의 초기화 작업이 필요하기 때문이다. 다시 말해서 'a'라는 변수가 정의되지 않았다. 따라서 우리는 클래스 객체 내에서 사용되는 변수를 초기화하는 작업이 필요하다. 이 작업을 속성 초기화(Initalize Attribute)라고 부른다. 다음의 예시 코드를 통해서 'a' 변수를 초기화하는 'init' 함수를 알아보자.

 

예시 코드:

    def __init__(self,a: int):
        self.a=a

 

init 함수는 객체를 참조하여 a라는 변수를 정수 형태로 받는다. 위 두 예시 코드를 종합하고, 함수 호출을 응용하여 카운트 클래스를 구현하는 것이 가능하다. 이때 함수 호출 시에 괄호 안의 정수는 a변수에 할당된다. 다음의 예시 코드를 참조하자.

 

예시 코드:

class Count:
    def __init__(self,a: int):
        self.a=a
    def cc(self):
        for i in range(10):
            self.a +=1
            print(self.a)
        return self.a

 

c=Count(0)

c.cc()

 

코드 결과:

클래스 객체 이해하기

 

클래스없이 구현하는 것은 충분히 가능하지만, 이것은 충분히 유용한 프로그래밍이다. 왜냐하면, a라는 변수를 받아 10까지 카운트하는 프로그램을 마치 공장에서 찍어내듯 효율적인 코딩이 가능하기 때문이다.

그리고 이것이 바로 파이썬의 클라쓰다.