[Python] 클래스에서 self

KangHo Lee's avatar
May 30, 2025
[Python] 클래스에서 self
self는 파이썬 클래스에서 매우 중요한 개념이며, 혼동하기 쉬운 부분이기도 합니다.
💡
  • 메서드의 첫 번째 매개변수 self를 명시적으로 구현하는 것은 파이썬만의 독특한 특징이다.
  • 예를 들어 자바와 같은 언어는 첫 번째 매개변수 self가 필요없다.

🔍 1. self가 필요한 이유

self인스턴스 자신을 가리키는 참조 변수입니다.
클래스 안의 메서드는 항상 첫 번째 인자로 self를 받아야 그 인스턴스의 속성이나 메서드에 접근할 수 있게 됩니다.
class FourCal: def setdata(self, first, second): self.first = first # 인스턴스 변수에 저장 self.second = second
여기서 self.first해당 인스턴스(a)의 first라는 속성을 의미합니다.
즉, a.first = 4가 되는 겁니다.

🧠 2. a.setdata(4, 2)처럼 self를 직접 안 넣어도 되는 이유

파이썬에서 메서드를 호출할 때는 self를 자동으로 전달해 줍니다.
a.setdata(4, 2)
이렇게 쓰면 실제 내부에서는 다음처럼 동작합니다:
FourCal.setdata(a, 4, 2)
즉, self는 자동으로 a 인스턴스가 전달되는 것이고,
사용자가 직접 넣지 않아도 되는 이유는 파이썬이 자동으로 첫 인자로 넘겨주기 때문입니다.

🧪 자바와 비교 (간단하게)

자바에서는 this 키워드를 사용해서 현재 객체를 가리키지만,
메서드 선언에 this를 직접 쓰지 않습니다. 파이썬은 메서드 선언에 self를 반드시 써야 한다는 점이 다릅니다.
class FourCal { int first; int second; void setData(int first, int second) { this.first = first; this.second = second; } }
자바: this는 선택적 사용
파이썬: self는 반드시 첫 번째 매개변수로 명시

✅ 요약

질문
설명
self가 필요한 이유
인스턴스 자신에 접근하기 위해 (속성 저장 등)
a.setdata(4,2)에 self를 안 넣는 이유
파이썬이 자동으로 인스턴스(a)를 self에 전달함
자바와 차이점
자바는 this를 생략 가능, 파이썬은 self를 반드시 첫 인자로 선언해야 함
Share article

devleekangho