PYTHON · 객체지향
믹스인 패턴
믹스인은 다중 상속으로 클래스에 특정 기능을 추가하는 패턴입니다. 단일 책임 원칙을 유지하면서 기능을 조합합니다.
객체지향고급mixin믹스인다중 상속조합
핵심 설명
믹스인은 다중 상속으로 클래스에 특정 기능을 추가하는 패턴입니다. 단일 책임 원칙을 유지하면서 기능을 조합합니다.
Python code
import json
class JsonMixin:
def to_json(self) -> str:
return json.dumps(vars(self), ensure_ascii=False, indent=2)
@classmethod
def from_json(cls, data: str):
return cls(**json.loads(data))
class LogMixin:
def log(self, message: str):
print(f"[{self.__class__.__name__}] {message}")
class ValidateMixin:
def validate(self) -> bool:
for name, value in vars(self).items():
if value is None:
raise ValueError(f"{name}은 None일 수 없습니다")
return True
# 믹스인 조합
class User(JsonMixin, LogMixin, ValidateMixin):
def __init__(self, name: str, email: str):
self.name = name
self.email = email
u = User("Alice", "alice@example.com")
u.log("생성됨")
u.validate()
print(u.to_json())
# JSON에서 복원
u2 = User.from_json('{"name": "Bob", "email": "bob@test.com"}')
u2.log(f"복원: {u2.name}")학습 팁
믹스인 클래스명에 Mixin 접미사를 붙여 의도를 명확히 하세요.
주의할 점
믹스인에 __init__을 정의하면 다중 상속 시 초기화 순서 문제가 발생합니다. 믹스인은 메서드만 제공하세요.
자주 묻는 질문
믹스인 패턴란 무엇인가요?
믹스인은 다중 상속으로 클래스에 특정 기능을 추가하는 패턴입니다. 단일 책임 원칙을 유지하면서 기능을 조합합니다.
믹스인 패턴 학습 시 주의할 점은 무엇인가요?
믹스인에 __init__ 을 정의하면 다중 상속 시 초기화 순서 문제가 발생합니다. 믹스인은 메서드만 제공하세요.