PHpullh

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__ 을 정의하면 다중 상속 시 초기화 순서 문제가 발생합니다. 믹스인은 메서드만 제공하세요.

Continue Learning

Python 학습을 이어가세요

총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.