01.4 파이썬 스크립트 파일

지금까지 파이썬 인터프리터를 활용하는 예를 보았습니다. 파이썬 인터프리터는 파이썬 코드를 대화식으로 실행해보며 간단한 실험을 수행하기에 딱 좋습니다. 그러나 긴 작업을 수행해야 한다면, 매번 코드를 입력해야 하는 이 방식은 조금 불편하겠죠. 이럴 때는 파이썬 프로그램을 파일로 저장하고 그 파일을 (함께) 실행하는 방법이 있습니다. 이번 절에서는 그런 파이썬 스크립트 파일의 예를 살펴보겠습니다.

1.4.1 파일로 저장하기

텍스트 편집기를 열고 hungry.py라는 파일을 작성합니다. hungry.py는 다음의 한 줄만으로 구성된 파일입니다.

print("I'm hungry!")

이어서 터미널을 열고 앞의 hungry.py를 저장한 디렉터리로 이동합니다. 그런 다음 파일 이름은 “hungry.py”를 인수로 지정해 python 명령을 실행합니다. 여기에서는 hungry.py~/deep-learning-from-scratch/ch01 디렉터리에 있다고 가정합니다.

$ cd ~/deep-learning-from-scratch/ch01   # 디렉터리로 이동
$ python hungry.py
I'm hungry!

이처럼 python hungry.py 명령으로 파이썬 프로그램을 실행할 수 있습니다.

1.4.2 클래스

지금까지 int와 str 등의 자료형을 살펴봤습니다(그리고 type() 함수로는 원하는 데이터의 자료형을 알아낼 수 있었죠). 이들은 내장된 자료형으로, 즉 파이썬이 기본으로 제공하는 자료형입니다. 이번 절에서는 새로운 클래스를 정의합니다. 개발자가 직접 클래스를 정의하면 독자적인 자료형을 만들 수 있습니다. 또한, 클래스에는 그 클래스만의 전용 함수(메서드)와 속성을 정의할 수도 있습니다.

파이썬에서는 class라는 키워드를 사용하여 클래스를 정의합니다. 클래스의 구조는 다음과 같습니다.

class 클래스 이름:
    def __init__(self, 인수, ...):    # 생성자
        ...
    def 메서드 이름 1(self, 인수, ...):  # 메서드 1
        ...
    def 메서드 이름 2(self, 인수, ...):  # 메서드 2
        ...

클래스 정의에는 __init__라는 특별한 메서드가 있는데, 클래스를 초기화하는 방법을 정의합니다. 이 초기화용 메서드를 생성자 constructor 라고도 하며, 클래스의 인스턴스가 만들어질 때 한 번만 불립니다. 또, 파이썬에서는 메서드의 첫 번째 인수로 자신(자신의 인스턴스)을 나타내는 self를 명시적으로 쓰는 것이 특징입니다(다른 언어를 쓰던 사람은 이처럼 self를 쓰는 규칙을 기묘하게 느낄지도 모르겠네요).

그럼 간단한 클래스를 하나 만들어보겠습니다. 다음 코드를 man.py 파일로 저장하세요.

class Man:
    def __init__(self, name):
        self.name = name
        print("Initialized!")

    def hello(self):
        print("Hello " + self.name + "!")

    def goodbye(self):
        print("Good-bye " + self.name + "!")

m = Man("David")
m.hello()
m.goodbye()

이제 터미널에서 man.py를 실행합니다.

$ python man.py
Initialized!
Hello David!
Good-bye David!

여기에서는 Man이라는 새로운 클래스를 정의했습니다. 그리고 Man 클래스에서 m이라는 인스턴스(객체)를 생성합니다.

Man의 생성자(초기화 메서드)는 name이라는 인수를 받고, 그 인수로 인스턴스 변수인 self.name을 초기화합니다. 인스턴스 변수는 인스턴스별로 저장되는 변수입니다. 파이썬에서는 self.name처럼 self 다음에 속성 이름을 써서 인스턴스 변수를 작성하거나 접근할 수 있습니다.

서브목차