이것은 another question의 질문에 대한 답입니다.Django 추상 모델 대 간단한 Python 믹스 vs Python ABCs
장고는 Abstract base classes 기능 (파이썬에서 ABC 클래스와 같지 않음)을 제공하여 상속받을 수있는 모델 (Django의 models.Model)을 만들 수 있지만 모델에 실제 테이블이있는 모델은 만들지 않습니다. 데이터 베이스. 하나는 모델의 메타 클래스에 '추상'속성을 설정하여이 동작을 트리거합니다.
이제 질문 : 장고가 왜이 방법으로이를 해결합니까? 이 특별한 종류의 '추상 기본 클래스'모델이 필요한 이유는 무엇입니까? 왜 객체 클래스에서 상속 받고 기존 모델과 혼합하여 Model mixin을 만들지 않겠습니까? 또는 파이썬 ABC에 대한 작업으로이 작업을 수행 할 수 있습니까?
상식은이 쉽게 긴 통렬한 비난의 연설로 변신 할 수 있기 때문에,
(Daniel 's도 좋지만 Aram은 더할 나위없이 좋았습니다.) 오브젝트를 상속하는 믹스 인을 사용하여 모델에 추가 필드를 선언 하시겠습니까? 하지만 추가 메서드를 추가하거나 재정의 할 수 있습니까? – hopla
예, 개체를 상속 한 mixins은 추가 필드와 메서드를 선언 할 수 있습니다. 상속받은 클래스 목록에서 먼저 객체를 상속받은 믹스 인이 먼저 오는지 확인하여 메소드를 오버라이드 할 수 있습니다. 그러나 순서에 관계없이 객체를 상속하는 mixin은 필드를 재정의 할 수 없습니다 (시도하더라도 유효성을 검사하지는 않습니다). –