본문 바로가기

언어/Python

[파이썬 기초] 인스턴스 메서드, 클래스 메서드, 스태틱 메서드 구분하기

메서드의 종류를 모르면 앞에 글을 먼저 읽고 보세요.

*메서드의 종류 : https://mumala.tistory.com/19

 

1. 클래스와 객체(인스턴스)의 네임스페이스

 : 먼저 클래스와 객체(인스턴스)의 저장공간(네임스페이스, namesapce)에 대해 이해하자

위와 같은 클래스(Gwang)와 객체(p1)를 만든다.

 

위 그림은 클래스와 객체의 저장공간 : 네임스페이스(namespace) 이다

위 그림처럼 객체와 클래스에는 각각 네임스페이스가 있으며 객체가 클래스를 상속받는 구조이다.

즉, 객체를 통해 변수나 함수를 호출하는 경우 다음과 같은 순서로 찾게된다.

1. 객체 (인스턴스) 영역

2. 클래스 영역

3. 전역 영역

 

자신이 찾는 변수가 객체에 있으면 바로 호출 없으면 클래스에서 찾는다.

 

 

2. 메서드의 종류 구분하기

: 위에서 배운 네임스페이스 개념을 통해 메서드의 종류를 구별해보자.

먼저 객체를 통해 접근하는 경우다.

 3개의 메서드 모두 객체를 통해 함수를 호출하는 것이 가능하다.

클래스를 통해 접근하는 경우다.

인스턴스 메서드만 불가능하다. 그 이유에 대해 알아보자.

 

먼저 클래스를 통해 접근했기 때문에 바로 클래스 네임스페이스를 확인한다. 하지만 매개변수가 self (자신 객체를 의미)이기 때문에 객체 내부의 변수들을 호출하는 것이 불가능하다.

 

 

이번에는 객체에 있는 값만 바꿔서 객체를 통해 메서드들을 호출한다.

인스턴스 메서드만 바뀐 값이 출력된다.

그 이유에 대해 알아보자.

p1.name = '뮤말라'를 했을 때 네임스페이스
객체를 통해 접근했기 때문에 바로 객체의 네임스페이스 확인

 ins_introduce의 매개변수가 self(자신 객체)이기 때문에 self.name인 '뮤말라'를 호출한다.

 

 

3.  3개 메서드의 비교 정리표