필자는 문서 작성 목적 외에도 많은 이점을 찾을 수 없습니다. 파이썬은 ABC에서 정의한 메소드를 구현하는 것을 잊어 버렸다고 경고하지만, 인터페이스로 객체를 참조하지 않기 때문에 인터페이스에서 메소드를 선언하는 것을 잊어 버리고 이벤트에 주목하지 않을 것입니다. 인터페이스와 비슷한 동작을 위해 ABC를 사용하는 것이 일반적입니까?인터페이스/추상 기본 클래스를 사용하는 것은 불쾌한가요?
11
A
답변
6
개인적으로, 개발자 나 다른 개발자 사이에서 인터페이스하는 라이브러리 나 다른 코드를 작성할 때 개인적으로 가장 유용한 추상 클래스를 찾습니다.
정적 유형 언어의 장점 중 하나는 잘못된 형식을 사용할 때 일찍 실패합니다 (종종 컴파일 시간만큼 빠름). ABC는 Python이 동적 타이핑을 통해 이와 똑같은 이점을 얻을 수있게합니다.
라이브러리 코드 덕분에 중요한 메소드가없는 객체를 입력하면 해당 메소드가 필요할 때까지는 실패하지 않을 것입니다 (사용 방법에 따라 많은 시간이 걸리거나 일관성없는 상태가 될 수 있음). 그러나 ABC의 경우 누락 된 방법 중 하나가 올바른 ABC를 사용하지 않고 (instanceof
수표에 실패) ABC에서 "유효성을 검사"합니다.
또한 ABC는 개념적으로나 문서화 문자열을 통해 문자 그대로 인터페이스를 문서화하는 훌륭한 방법입니다.
1
AFAIK, 구현되지 않은 추상 메서드에 대해서는 예외로 NotImplementedError
예외가 사용되었습니다.
그러나 ABC는 파이썬으로 간주 될 수 있습니다. 왜냐하면 지금은 part of the Python standard library이기 때문입니다.
관련 문제
- 1. 장고 (Django)보기에 클래스를 사용하는 것은 Pythonic입니까?
- 2. 템플릿 기본 클래스를 기본 클래스 인수로 사용하는 클래스
- 3. MVC의 컨트롤러에서 ORM 클래스를 직접 사용하는 것은 좋지 않습니까?
- 4. Java에서 기본 화살표 버튼 클래스를 처음 사용하는 경우
- 5. 기본 클래스를 파생 기본 클래스로 초기화 하시겠습니까?
- 6. Java에서 기본 기본 클래스를 설정하는 방법은 무엇입니까?
- 7. 클래스를 배우지 만 이상한 문제가있는 것은 간단합니다.
- 8. 기본 클래스를 추출하는 도구?
- 9. App-class를 TypeInTargetAssembly로 사용하는 것은 실수입니까?
- 10. L2S, WCF 및 기본 클래스를 사용하는 다중 계층 응용 프로그램
- 11. 기본 클래스를 통해 종속성 제공
- 12. VB.NET에서 제네릭을 사용하는 것은 무엇입니까?
- 13. 추상 클래스를 사용하는 자바
- 14. 동적 클래스를 사용하는 C#
- 15. "스레드"클래스를 사용하는 방법?
- 16. OOP : 언제 기본 클래스를 만들어야합니까?
- 17. 심볼 속성에 기본 클래스를 지정해야합니까?
- 18. 어디에서 빈 기본 클래스를 넣어야합니까?
- 19. OCSP 응답에서 responderID를 사용하는 것은 무엇입니까?
- 20. 뷰 사이의 기본 패딩을 제어하는 것은 무엇입니까?
- 21. QMessageBox의 기본 제목을 결정하는 것은 무엇입니까?
- 22. 비표준 (숨겨진) API 클래스를 사용하는 방법은 무엇입니까?
- 23. 것은
- 24. 것은
- 25. 기본 클래스를 디자인 할 때 상속 정책
- 26. 부분 클래스를 사용하여 EF 엔티티에 기능을 추가하는 것은 나쁜 습관입니까?
- 27. 기본 클래스를 확장하는 집계 클래스 - LSP 위반?
- 28. base64 클래스를 사용하는 방법은 무엇입니까?
- 29. 인터페이스 및 클래스를 사용하는 다형성
- 30. bool없이 && 클래스를 사용하는 C++/&& 오버로드?