__init__
함수는 파이썬 클래스에서 객체가 생성될 때 자동으로 호출되는 초기화 메서드이다. 이 메서드는 객체의 속성을 초기화하고, 객체 생성 시 필요한 초기 설정을 수행한다. __init__
메서드는 생성자(constructor)라고도 한다.
__init__
함수의 정의와 호출
__init__
함수는 다음과 같은 형태로 정의된다.
class ClassName:
def __init__(self, parameters):
self.attribute = parameters
self
는 생성된 인스턴스를 참조하며, 인스턴스 메서드에서 항상 첫 번째 매개변수로 사용된다.parameters
는 객체를 생성할 때 필요한 값을 전달받는다.
객체를 생성할 때, __init__
함수는 자동으로 호출되며, 전달된 인수들은 self
를 통해 인스턴스 변수로 저장된다.
예제: __init__
함수 사용
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self):
return f"안녕하세요, 제 이름은 {self.name}이고, 저는 {self.age}살입니다."
# 객체 생성
person1 = Person("홍길동", 30)
person2 = Person("김철수", 25)
# 메서드 호출
print(person1.greet()) # 안녕하세요, 제 이름은 홍길동이고, 저는 30살입니다. 출력
print(person2.greet()) # 안녕하세요, 제 이름은 김철수이고, 저는 25살입니다. 출력
위 예제에서 Person
클래스는 __init__
메서드를 사용하여 객체 생성 시 이름과 나이를 초기화한다.
__init__
함수의 역할
객체 초기화:
__init__
함수는 객체가 생성될 때 초기화 작업을 수행한다.인스턴스 변수 설정: 객체의 속성을 정의하고 초기값을 설정한다.
초기 설정: 객체 생성 시 필요한 초기 설정을 수행한다.
__init__
함수와 __new__
함수의 차이
__new__
함수는 객체의 인스턴스를 생성하는 역할을 하며, 클래스 자체에서 호출된다.__new__
함수는 매우 드물게 사용되며, 주로 불변 객체(immutable object)를 생성할 때 사용된다.__init__
함수는 생성된 객체를 초기화하는 역할을 하며,self
를 통해 인스턴스를 참조한다.
class Example:
def __new__(cls, *args, **kwargs):
print("Creating instance")
instance = super().__new__(cls)
return instance
def __init__(self, value):
print("Initializing instance")
self.value = value
# 객체 생성
example = Example(42)