본문 바로가기
Programming/Python

Python 파이썬 self와 __init__ 알아보기 - 심코딩

by 심코딩 2022. 11. 8.

오늘은 저도 처음에 굉장히 고생을 했던 부분에 대해 한번 포스팅을 해보려 합니다.

 

Python 파이썬에서는 클래스를 이용하여 편하게 함수를 다룰 수 있습니다. 클래스 (class) 에 대한 포스팅은 아래를 참고 부탁드립니다.

 

 

파이썬 클래스(Class) 함수란? - 파이썬 코딩 기본 문법 (Python)

오늘은 파이썬 기본 공부를 하면서 굉장히 헷갈렸던 개념중의 하나인 클래스 (Class)에 대해 설명을 해보려 한다. 사실 나도 공부를 하면서 여러 티스토리, 블로그를 찾아보았지만 그 특유의 공대

s1mcoding.tistory.com

 

파이썬 클래스 (class)를 이용하면 아래와 같은 장점들을 가질 수 있습니다.

  • 재사용을 하는데에 굉장히 유용하다.
  • 함수를 실행을 했음에도 불구하고 함수 자신 (self)를 다시 호출할 수 있다.
  • 함수들의 관리자체가 편하다.
  • 변수 관리가 편하다.

 

class를 정의 하는 방법, 메소드

간략하게 한번 클래스에 대해서 다시 알려드리기 위해서 아래 코드를 참고 부탁드립니다.

class Simcoding:
    def first_function(something):
        print("Hello")

 

Simcoding 이라고 하는 클래스를 만들고, 그 안에 first_function 이라는 함수를 만들었습니다.

 

이 함수를 이용을 하려면 인스턴스를 만들어 줘야 합니다. a 라는 인스턴스를 만들어서 Simcoding 클래스 안에 있는 first_function 이라는 함수를 실행하려면 아래와 같은 코드를 작성해주면 됩니다.

 

class Simcoding:
    def first_function(something):
        print("Hello")

a = Simcoding()
a.first_function()

#### 결과값 ####
Hello
################

 

여기서 first_function과 같은 클래스 내의 함수를 메소드라고 부릅니다.

한 클래스 안에서 메소드는 여러개도 가능합니다. 

 

class Simcoding:
    def first_function(something):
        print("Hello")
    def second_function(something):
        print("Hi")
    def third_function(something):
        print("Annyong")

 

self , __init__ 에 대한 이해

 

클래스에서 self는 단어 뜻 그대로 "자기 자신"을 뜻한다. 아래 코드를 다시 한번 보시기 바랍니다.

 

class Simcoding:
    def __init__(self):
        self.final = 0
    def first_function(self,num):
        self.final += num
        print(self.final)
        return self.final

a = Simcoding()

 

first_function 이라고 하는 함수에 self, num 이라고 하는 인자를 넣을 수 있도록 하였습니다. 그리고 어떠한 숫자 (num) 이 들어온다면 그 숫자를 더해서 더한값을 출력을 하는 것입니다.

 

class Simcoding:
    def __init__(self):
        self.final = 0
    def first_function(self,num):
        self.final += num
        print(self.final)
        return self.final

a = Simcoding()

a.first_function(2)
a.first_function(5)

### 결과값 ###
2
7
##############

 

여기에 차례대로 2와 5를 넣으면 처음에는 당연히 2가 출력이 되고, 그 다음에는 2+5인 7이 출력이 되게 됩니다.

 

하지만 여기서 보면 first_function 안에는 self 와 num 2개의 인자가 들어가야 하는데 a.first_function(2) 에서 보면 인자를 하나만 넣은 것을 볼 수 있습니다.

 

이것이 바로 self가 "자기자신" 이기 때문에 가능한 것입니다.

 

__init__ 이라는 코드는 initialize의 약자로 알고 있으면 좋다. 쉽게 말해 "시작"을 해주는 것인데, 여러개의 인스턴스가 있을 때에 처음에 실행이 되는 것이다. 인스턴스 1,2,3을 모두 실행을 할 경우

 

  1. init 내의 함수 실행
  2. 인스턴스 1 실행
  3. init 내의 함수 실행
  4. 인스턴스 2 실행
  5. init 내의 함수 실행
  6. 인스턴스 3실행

이렇게 된다고 생각을 해주면 됩니다.


오늘은 클래스의 간단한 정의와 self, __init__ 에 대해서 알아보았습니다.

사실 이 포스팅을 본다고 해도 굉장히 많이 헷갈리시는 분들이 있을 겁니다. 다른 곳에서 클래스 관련 함수를 많이 찾아보시고 직접 만들어보시는 것을 추천합니다.

 

 

댓글