본문 바로가기
두두 IT/파이썬 퀴즈

[W3S 오답노트] Python Inner Class

by DoDo's 2026. 5. 6.
반응형

First create an outer class object, then use it to create the inner class object

🪆 파이썬 완벽 가이드: 마트료시카 인형처럼 품고 있는 내부 클래스

내부 클래스(Inner Class)는 바깥쪽에 있는 클래스(Outer Class)의 뱃속에 들어있는 형태를 말합니다. 이것은 마치 러시아의 전통 인형인 '마트료시카'와 완벽하게 똑같습니다.

가장 바깥쪽에 있는 큰 인형을 먼저 열어야(객체로 생성해야) 그 안에 들어있는 작은 인형(내부 클래스)을 꺼내서 가지고 놀 수 있겠죠?

📖 핵심 원리: 바깥 객체가 있어야 안쪽 객체도 존재한다!

내부 클래스는 보통 바깥쪽 클래스와 아주 밀접한 관계가 있을 때 사용합니다. 예를 들어, '자동차(Outer)' 클래스 안에 '엔진(Inner)' 클래스를 만드는 식입니다. 자동차라는 실체가 먼저 존재해야, 그 자동차에 속한 엔진도 의미가 생기기 때문입니다.

따라서 밖에서 내부 클래스를 사용하려면 반드시 바깥쪽 클래스의 객체(붕어빵)를 먼저 구워낸 다음, 그 객체를 통해서 안쪽 클래스에 접근해야 합니다.

💻 코드로 보는 마트료시카 인형 열기

Python
 
# [1] 바깥쪽 클래스 (큰 인형)
class OuterClass:
  def __init__(self):
    print("큰 인형(Outer)이 만들어졌습니다!")

  # 바깥 클래스 안에 정의된 내부 클래스 (작은 인형)
  class InnerClass:
    def display(self):
      print("짜잔! 작은 인형(Inner)이 등장했습니다!")

# ---------------------------------------------------------

# ❌ 1. 안쪽 인형만 바로 꺼내려고 하면 에러가 납니다! (보기 2번 오답의 이유)
# inner_obj = InnerClass() 

# ⭕ 2. 정답의 흐름: 큰 인형을 먼저 만들고 -> 작은 인형을 꺼냅니다.
# (1) 바깥 클래스의 객체를 먼저 생성합니다.
outer_obj = OuterClass() 

# (2) 생성된 바깥 객체(outer_obj)를 통해 내부 클래스의 객체를 생성합니다.
inner_obj = outer_obj.InnerClass()

# 정상적으로 내부 클래스의 기능이 작동합니다!
inner_obj.display()

📝 핵심 한 줄 총정리 요약

"클래스 안에 있는 내부 클래스(Inner Class)를 사용하려면, 반드시 바깥쪽 클래스의 객체를 먼저 생성한 뒤에 그 객체를 징검다리 삼아 안쪽 객체를 만들어야 한다!"

 

 

 

반응형