Python 클래스 인스턴스화와 __init__() 메서드의 이해
Python에서 클래스를 호출하는 인스턴스화(instantiation) 작업은 기본적으로 비어 있는 객체를 생성합니다. 하지만 대부분의 클래스는 특정 초기 상태를 가진 객체를 만들기를 원합니다. 이를 위해 Python은 __init__()이라는 특별한 메서드를 제공하며, 클래스 내부에 다음과 같이 정의할 수 있습니다.
def __init__(self):
self.data = []__init__() 메서드의 자동 호출
클래스에 __init__() 메서드가 정의되어 있으면, 클래스가 인스턴스화되는 순간 새로 생성된 인스턴스에 대해 이 메서드가 자동으로 호출됩니다. 따라서 별도의 초기화 코드를 실행하지 않아도 객체가 만들어질 때 원하는 초기 상태가 설정됩니다.
x = MyClass()
위 코드처럼 클래스 이름을 함수처럼 호출하면, Python은 내부적으로 빈 객체를 생성한 뒤 __init__()을 실행하여 초기화를 완료합니다.
인자를 받는 __init__() 메서드
__init__() 메서드는 필요에 따라 인자(arguments)를 가질 수 있습니다. 이 경우 클래스 인스턴스화 연산자에 전달된 인자들이 그대로 __init__()으로 넘어갑니다. 아래 예제는 복소수(Complex)를 표현하는 클래스입니다.
>>> class Complex: ... def __init__(self, realpart, imagpart): ... self.r = realpart ... self.i = imagpart ... >>> x = Complex(4.0, -6.5) >>> x.r, x.i (4.0, -6.5)
위 예제에서 Complex(4.0, -6.5)를 호출하면 실수부와 허수부 값이 각각 __init__()의 realpart와 imagpart 매개변수로 전달되어, 인스턴스 속성 x.r과 x.i에 저장됩니다.
핵심 정리
- 클래스 호출 시 기본적으로 빈 객체가 생성됩니다.
__init__()은 객체 생성 직후 자동으로 실행되는 초기화 메서드입니다.- 첫 번째 매개변수
self는 생성된 인스턴스 자신을 가리킵니다. - 생성자에 인자를 전달하면
__init__()이 해당 값을 받아 인스턴스 속성을 설정할 수 있습니다.