Replies: 5 comments
-
ABC 를 사용하는 경우 추상 클래스를 상속하는 구체 클래스를 구현할 때 발생할 수 있는 실수를 줄일 수 있다는 점에서, 장고 모델의 경우 ABC 를 사용하는것은 적절하지 않다고 생각합니다. |
Beta Was this translation helpful? Give feedback.
-
저도 ABC 를 사용하는 것에 동의합니다. |
Beta Was this translation helpful? Give feedback.
-
저는 장고 모델의 경우 ABC 를 사용하는 것이 적절하지 않다고 생각합니다. ABC를 사용하는 것에 대한 내용을 공식문서에도 찾아볼 수 없고, two scoop of django 3.x 에서 발췌된 내용에 근거해서 좋지 않다고 생각합니다.
|
Beta Was this translation helpful? Give feedback.
-
저도 같은 의견입니다. 일반 클래스는 ABC를 권고, Django 추상 클래스는 사용하지 않는것으로. |
Beta Was this translation helpful? Give feedback.
-
저도 장고 모델 이외 클래스에 대해서는 ABC 사용에 동의합니다. 특히 Mixin 같은 경우 ABC를 사용하면 정적분석 커버리지를 크게 향상시킬 수 있습니다. |
Beta Was this translation helpful? Give feedback.
-
추상 클래스를 작성할 때, python의 abc를 사용하는 것을 제안합니다.
https://www.python.org/dev/peps/pep-3119/
https://docs.python.org/3/library/abc.html#module-abc
현재는 구체 클래스에서 필수적으로 구현해야하는 메서드나 프로퍼티가 있는 경우,
추상클래스에서 NotImplementedError 를 발생시키는 방식으로 작성되고 있습니다.
python의 abc를 사용하게 되면 상속구조에 대해 조금 더 strict한 방식으로 관리할 수 있는 장점이 있습니다.
기존에 사용하던 방식
abc 사용
@abstractmethod
데코레이터를 적용하여 파생 클래스에서 반드시 구현해야하는 메서드를 강제할 수 있습니다.추가) 추상 모델 클래스에도 abc를 적용해 볼 수 있는가?
추상 모델 클래스의 경우 ABC를 적용하면 metaclass conflict 가 발생합니다.
아래와 같이 meta class를 재정의해서 상속하는 방식을 사용하는 것이 해결책으로 보입니다.
추상 모델 클래스의 경우 abc 사용하는 것이 적절할 지는 고민이 되는데 다른 분들의 의견이 궁금합니다.
Beta Was this translation helpful? Give feedback.
All reactions