Introduction to the Python __init__() method
클래스의 새 객체를 생성할 때 Python은 자동으로 __init__() 메서드를 호출하여 객체의 속성을 초기화합니다.
일반 메서드와 달리 __init__() 메서드에는 양쪽에 두 개의 밑줄(__)이 있습니다.
명명은 dunder init라고 합니다.
__init__() 메서드의 양쪽에 있는 이중 밑줄은 파이썬이 내부적으로 메서드를 사용할 것임을 나타냅니다. 즉, 이 메서드를 명시적으로 호출하면 안 됩니다.
파이썬은 새 객체를 만든 직후에 __init__() 메서드를 자동으로 호출하기 때문에 __init__() 메서드를 사용하여 object의 속성을 초기화할 수 있습니다.
다음은 __init__() 메서드를 사용하여 Person 클래스를 정의합니다.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
if __name__ == '__main__':
person = Person('John', 25)
print(f"I'm {person.name}. I'm {person.age} years old.")
Person 클래스의 인스턴스를 만들 때 Python은 다음 두 가지 작업을 수행합니다.
- 객체의 namespace( 예, __dict__ )를 empty dict (
{}
)로 setting함으로서 Person 클래스의 새인스턴스를 만든다. - __init__ method 를 호출하여 새로만든 개체의 속성을 초기화합니다.
__init__ method는 constructor(생성자)가 아니다. 단지 개체 속성을 초기화한다. 즉 초기화 내역을 __init__ method에 정의
__init__에 self 이외의 perameters가 있는 우 위의 예와 같이 새 개체를 만들 때 해당 인수를 전달해야합니다. 그렇지 않으면 오류가 발생합니다. ( default value 사용하라! )
The __init__ method with default parameters
__init__() 메서드의 매개 변수는 기본값을 가질 수 있습니다. 예를 들어:
class Person:
def __init__(self, name, age=22):
self.name = name
self.age = age
if __name__ == '__main__':
person = Person('John')
print(f"I'm {person.name}. I'm {person.age} years old.")
Output:
I'm John. I'm 22 years old.
이 예제에서 age 매개 변수의 기본값은 22입니다. age인수를 Person()에 전달하지 않기 때문에 age는 기본값을 사용합니다.
Summary
- __init__() 메서드를 사용하여 객체의 속성을 초기화합니다.
- __init__()는 객체를 생성하지 않지만 객체가 생성 된 후 자동으로 호출됩니다.
'Python Object-oriented Programming' 카테고리의 다른 글
Private Attributes (0) | 2023.04.03 |
---|---|
Instance Variables (0) | 2023.04.03 |
Class Methods (0) | 2023.04.02 |
Methods (0) | 2023.04.02 |
Class Variables (0) | 2023.04.02 |
댓글