Skip to content

Instantly share code, notes, and snippets.

@shoark7
Last active June 5, 2023 11:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save shoark7/e57e5874fc0bad9dd995ae5ff3f45abb to your computer and use it in GitHub Desktop.
Save shoark7/e57e5874fc0bad9dd995ae5ff3f45abb to your computer and use it in GitHub Desktop.
파이썬에서 클래스 메소드마다 사용하는 'self' 인자의 뜻을 살펴봅시다.

파이썬에서 클래스를 처음 만들면 모든 메소드의 첫 인자는 'self'라고 놓고 시작하는데요. 왜 그럴까요? 오늘은 그 이유를 간략하게 살펴보겠습니다.

먼저 간단히 클래스를 만들어보겠습니다.

class Person:
    def __init__(self, name, job):
        self.name = name
        self.job = job
        
    def introduce(self):
        return f"내 이름은 {self.name}, {self.job}이죠"

인간 클래스를 만들었습니다. 테스트해볼게요.

p = Person("코난", "탐정")
print(p.introduce())

 이름은 코난, 탐정이죠

문제없이 작동합니다. 그러면 왜 'self'가 필요한지 생각해볼게요. 그 이유는 객체의 메소드를 실행하는 내부동작에 기인합니다. 앞서 코난이 자기소개를 하던 코드를 다시 살펴보겠습니다.

p.introduce()

파이썬 내부적으로 저 코드는 다음과 같은 코드로 변환돼서 실행됩니다.

Person.introduce(p)

구조를 기억해주세요. 클래스.메소드(인스턴스) 클래스의 메소드를 실행시키는데, 그 첫 인자로 인스턴스를 주는거죠. 모든 인스턴스의 메소드는 내부적으로 저런 구조로 번역되어 실행됩니다. 그래서 함수가 인스턴스 메소드라면 첫 인자를 'self'로 줘야 대상이 되는 인스턴스가 정확히 무엇인지 확인할 수 있습니다.

참고로 'self'라는 이름은 원하는 대로 'asdfasdf', 'fffffffffff', 'f*' 등으로 줄 수 있는데요. 'self'는 파이썬에서 공식적으로 권장하고 유저들에게 통일된 양식이라고 생각하시면 됩니다. 그렇기에 나만의 단어를 쓰지 맙시다. :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment