[Python] 상속과 네임스페이스

azzurri21·2021년 6월 26일
0

Python Scoping Rule

목록 보기
1/3

Scoping Rule

인스턴스의 스코핑 룰(Scoping Rule)은 아래와 같음.

  1. 인스턴스 객체 영역
  2. 클래스 객체 영역
  3. 전역 영역

여기서 클래스간의 상속 관계가 포함되면 아래와 같이 규칙이 확장됨. 이러한 규칙을 상속 관계 검색의 원칙(Principles of Inheritance Search)이라고 함.

  1. 인스턴스 객체 영역
  2. 클래스 객체 상속 영역(자식 -> 부모 순으로 탐색)
  3. 전역 영역

(이상 여기를 인용함)

멤버변수와 메소드의 namespace

인스턴스 변수명은 인스턴스 namespace에 존재.
(인스턴스) 메소드명은 클래스 namespace에 존재.

그리하여 자식 인스턴스에서 부모 클래스에 정의된 메소드를 호출 가능.
자식 인스턴스에서 호출한 부모 메소드를 통해 선언된 인스턴스 변수는 자식 인스턴스 객체 영역(namespace)에 저장.

=> 자식 메서드와 부모 메서드의 관계, 인스턴스 변수의 생성/접근과 클래스 변수의 접근 원리 설명가능.

[참고]

  • super()(부모) 클래스를 의미한다.
  • 따라서 super().부모 인스턴스 속성 접근 시 오류가 발생한다. super().부모 클래스 변수 접근은 가능하다.
  • 한편 super().부모 메소드 호출 전달인자에 self는 제외한다.
# 세 번쩨 참고 예시
class Parent:
    def foo(self, a):
        pass

class Child(Parent):
    def fxx(self):
        super().foo(a) # 부모 메소드 호출 시 인수에 self 제외
profile
파이썬 백엔드 개발자

0개의 댓글