[Python] __init__(self) 가 무엇일까

minj-j·2023년 8월 20일
0

JUST STUDY

목록 보기
4/4
post-thumbnail

파이썬도 자바와 같이 Class와 메서드를 선언할 수 있다.
메서드 : 클래스 내에 정의된 함수

init 이란

__init__

init(self)는 생성자, constructor로 불리며
초기화 initialize 메서드 라고도 한다.
객체가 생성될 때, 자동으로 호출되는 메서드를 의미한다.
객체의 초기값을 설정해야 할 때 사용한다.

class Calcul:
    def __init__(self, first, second) -> None:
        self.first = first
        self.second = second

    # 이렇게 데이터를 설정해 주는 함수를 만들어 주기 보다 생성자를 활용하여 초기값을 설정하는게 안전한다.
    # setdata 함수 없이도 add 함수는 __init__을 통해 할당된 숫자들로 연산이 가능하다.
    def setdata(self, first, second):
        self.first = first
        self.second = second

    def add(self):
        result = self.first + self.second
        return result

a = Calcul(5,3)
print(a.first) # 5
print(a.add()) # 8

Self

self는 인스턴스 자기 자신을 의미한다

인스턴스 : 클래스에 의해 만들어진 객체

class Person:
    def __init__(self):
        self.hello = '안녕하세요.'
        
    def greeting(self):
        print(self.hello)
 
james = Person()
james.greeting()    # 안녕하세요.

여기에서 init 의 매개변수 self에 들어가는 값은 Person() 이라고 할 수 있다.

이렇게 Person()이 들어감으로써 self가 완성된 뒤 james에 할당이 된다.

james = Person()

그리고 Person 내의 메서드를 호출하면, 현재 인스턴스 즉 james가 greeting 메소드의 self로 들어가게 된다.
james는 클래스 Person의 인스턴스 이므로 greeting은 init 에 선언 된 self.hello의 값을 사용할 수 있게 된다.

james.greeting()    # 안녕하세요.

아래 사진을 보면 이해가 쉬워질 것 같다.

reference
1. https://dojang.io/mod/page/view.php?id=2373
2. https://www.geeksforgeeks.org/__init__-in-python/

profile
minj-j`s Development diary!

0개의 댓글