Python ABC-1
Python ABC abc의 역할 직접 class를 상속받지 않고도 isinstance, issubclass를 통해 subclass로 인지되는 가상 subclass 를 만들 수 있게한다. Python의 Abstract base class는 hasattr , magic method와 같은 방법보다 인터페이스를 정의함으로서 duck-typing을 보완 한다. isinstance(x, collections.Iterable)이 hasattr()나 그에 동등한 로직의 try...except 블록의 코드보다 더 이해하기 쉽다. (의도가 명확하다.) 즉, a라는 클래스가 A라는 상위 클래스의 인터페이스를 알맞게 구현하기만 한다면 a는 A의 subclass이다. abstract class/ 추상 클래스 세부 구현이 누락된 Class concrete class/ 구상 클래스 완전한 속성과 메서드가 구현된 Class Open-closed principle SOLID원칙 중 Open-closed 원칙을 만족한다. Open-closed원칙을 지키지 않은 코드는 <Open-closed principal> 기능을 추가할 때마다 기존 코드의 변경이 발생한다. - 새로운 class나 기능의 확장에 대해서는 열려있고 - 수정에 대해서는 폐쇄적이어야한다. 개방-폐쇄 원칙을 준수하는 코드는 객체지향의 장점인 다형성과 확장성을 만족한다. 잘 활용한다면 새로운 변경사항에 대해 유연하며 유지보수 비용 감소의 장점으로 이어진다. Polymorphic Open-closed principle 1990년경 Bertrand Meyer가 작성한 개방-폐쇄 원칙은 추상 인터페이스(abstracted interfaces)를 참조하기 위해 재정의되었다. abstract base class로부터 상속을 권고한다. 인터페이스 스펙은 상속을 통해 재사용될 수 있지만 재구현까지는 할 필요가 없다. 기존 인터페이스는 수정에 대해, 그리고 새 구현에 대해 폐쇄돼있으며 최소한의 abstracted...