내부 클래스(Inner Class)
- 내부 클래스는 클래스 내부에 정의된 클래스를 의미
- 특정 클래스에만 사용되는 보조 클래스를 만들 때 사용된다
- 해당 클래스의 구성 요소로 취급되며, 주로 네임스페이스 관리를 위해 사용된다
네임스페이스(namespace)
- 변수나 함수 등이 유효한 범위(scope)를 가지는 공간을 의미
- 변수나 함수의 이름 충돌을 방지하고, 코드를 구성하고 유지보수하는 데 도움이 된다
- 종류
- 전역 네임스페이스(Global Namespace)
- 전역적으로 선언된 변수나 함수들이 존재하는 공간
- 스크립트 전체에서 접근 가능
- 지역 네임스페이스(Local Namespace)
- 함수 내부에서 선언된 변수나 함수들이 존재하는 공간
- 해당 함수 내에서만 접근 가능
- 내장 네임스페이스(Built-in Namespace)
- 파이썬에서 기본적으로 제공하는 내장 함수나 예약어들이 존재하는 공간
- e.g. print()
, len()
, sum()
예시
User
클래스는 사용자를 나타내는 데이터베이스 모델 클래스- 이 클래스 내부에는
UserManager
라는 내부 클래스가 정의되어 있다 UserManager
클래스는 사용자 관리에 필요한 유틸리티 함수들을 정의한다- 이렇게 함으로써, 데이터베이스 모델 클래스 내에서 관련된 유틸리티 함수나 데이터 구조를 쉽게 정의하고 사용할 수 있다
class User:
def __init__(self, username, email):
self.username = username
self.email = email
# 내부 클래스로 유틸리티 클래스 정의
class UserManager:
def __init__(self):
self.users = []
def add_user(self, user):
self.users.append(user)
print(f"User '{user.username}' added successfully.")
def get_all_users(self):
return self.users
# 데이터베이스 모델 클래스의 인스턴스 생성
user_model = User("JohnDoe", "john@example.com")
# 유틸리티 클래스의 인스턴스 생성
user_manager = user_model.UserManager()
# 유틸리티 클래스를 사용하여 사용자 추가
user_manager.add_user(user_model)
# 유틸리티 클래스를 사용하여 모든 사용자 가져오기
all_users = user_manager.get_all_users()
print("All users:", all_users)