성장일기/파이썬

[python] __init__()메서드란 무엇인가 확실하게 알고 쓰자! 있고 없고 차이점

지추월자 2023. 6. 29. 09:43
반응형

__init__() 메서드는 클래스의 인스턴스가 생성될 때 자동으로 호출되는 특별한 메서드입니다. 이 메서드를 사용하여 인스턴스 변수를 초기화할 수 있습니다.

당연히 클래스를 정의하지 않고 __init__() 메서드만 사용한다면, __init__() 메서드는 단순히 함수로서 동작하게 됩니다. 클래스가 없으므로, self 매개변수를 사용할 수 없으며, 인스턴스 변수를 정의할 수도 없습니다.

예를 들어, 다음과 같이 Person 클래스를 정의하고, __init__() 메서드를 사용하여 인스턴스 변수 name과 age를 초기화할 수 있습니다.

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

person1 = Person("Alice", 25)
person2 = Person("Bob", 30)

print(person1.name, person1.age)
print(person2.name, person2.age)

위 코드는 Person 클래스를 정의하고, __init__() 메서드를 사용하여 name과 age 인스턴스 변수를 초기화합니다. person1과 person2 객체를 생성할 때, __init__() 메서드가 자동으로 호출되어 인스턴스 변수 name과 age를 초기화합니다.

마지막으로, person1과 person2 객체의 name과 age 인스턴스 변수를 출력합니다.

자 그렇다면 이번에는 __init()__메서드를 사용하지 않은 경우로 같이 비교해보겠습니다.

class PersonWithoutInit:
    pass

person1 = PersonWithoutInit()
person1.name = "Alice"
person1.age = 25

person1 객체를 생성할 때는 __init__() 메서드가 없으므로, 인스턴스 변수를 따로 초기화해주어야 합니다

따라서, __init__() 메서드를 사용하여 클래스의 인스턴스가 생성될 때 인스턴스 변수를 초기화할 수 있습니다. 이를 통해 인스턴스 생성과 초기화를 한 번에 처리할 수 있으며, 코드의 가독성과 유지보수성을 높일 수 있습니다.

반응형