본문 바로가기

Dev/python

파이썬 self & __init__

알고리즘 코딩테스트에 보면 def로 선언한 함수 안에 self를 계속 마주치게 된다.

 

self가 무엇인지.. 어떻게 사용해야하는지 전혀 감이 안왔고, 찾아보면서 알게되었다.

나처럼 고민하는 사람들이 있을 것 같아 아래의 예시를 통해 이해해보자!

class FourCal:
	# setData 함수
    def setData(self, first, second):
        self.first = first
        self.second = second
    # add 함수
    def add(self):
        result = self.first + self.second
        return result


a = FourCal()
# a.setData를 했을때 a는 함수인 setData를 가르키고 4는 first, 2는 second를 가르킨다.
# 즉 setData 함수에 first에 값 4를 넣고, second에 2를 세팅해라 라는 뜻
a.setData(4, 2)
print(a.add())

두개의 함수 setData와 add 함수가 선언되어있다.

 

그리고 아래에서 a.setData(4,2) 를 통해 값을 세팅해주는 부분이 있는데

여기서 a가 가르키는것은 self를 말한다.

 

즉 다시말하면 a.setData에서 a가 setData 함수를 가르키고, 4는 setData의 first, 2는 second를 가르킨다!

아래에서 print(a.add())도 마찬가지다. 여기서 a는 add라는 함수를 가르키고 print해주는 값은 add함수에서 수행되어

반환되는 result값이 찍히게 되는 것이다.

 

self에 대해서 까먹지 말고 알아두자!!

 

__init__에 대해서 알아보자!

class FourCal:
    # __init__ 이라는 함수는 파이썬이 실행될떄
    # 맨 처음 실행되는 것이다. -> 생성자를 말함!

    # 아래 setData나 add는 함수를 선언만 해놓은 상태!!!
    # __init__은 실행될 때 선언이 아닌 먼저 실행하고 시작한다!!
    def __init__(self, first, second):
        self.first = first
        self.second = second

    def setData(self, first, second):
        self.first = first
        self.second = second

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


# a = FourCal()
# 에러가 나는 이유는 __init__ 때문이다
# init을 먼저 실행해야 하기 때문에 안에 first, second의 값을 설정해줘야함!
a = FourCal(1, 2)
# 이렇게 선언해줘야 init을 통해 first 에 1 second 2를 가지고 시작하겠다 뜻!

 

 

'Dev > python' 카테고리의 다른 글

파이썬 pip 사용하기  (0) 2020.12.13
파이썬3 함수에서의 화살표  (0) 2020.10.05
파이썬 모듈  (0) 2020.09.21
파이썬 함수(입출력)  (0) 2020.09.17
파이썬의 제어문  (0) 2020.09.16