파이썬 추상클래스 예제

By Dave Sanasack, on Aug, 02 2019

버전 3.3 이후 더 이상 사용되지 않습니다: 이제 이 데코레이터를 중복하여 추상 메서드()와 함께 classmethod를 사용할 수 있습니다. __new__ 메서드를 활용하여 활용할 수도 있습니다. 당신은 뭔가를 잊어 버렸습니다. __new___ 메서드는 항상 새 개체를 반환하므로 수퍼클래스의 새 메서드를 반환해야 합니다. 다음과 같이 하십시오. abstractmethod()가 다른 메서드 설명자와 함께 적용되면 추상 클래스 method메서드를 나타내는 기본 제공 classmethod()의 하위 클래스와 같은 사용 예와 같이 가장 안쪽데코레이터로 적용해야 합니다. 그렇지 않으면 추상 메서드()와 유사합니다. 다음 Python 코드는 abc 모듈을 사용하고 추상 기본 클래스를 정의합니다: 이 프로그램을 시작하면 모든 필수 메서드/속성이 구현되고 물론 추가 함수를 추가할 수 있기 때문에 이 프로그램이 추상 클래스가 아님을 알 수 있습니다. 베이스의 일부가 아닙니다(여기: i_am_not_abstract).

API 사양에 메서드 외에 특성이 포함된 경우 @abstractproperty 정의하여 구체적인 클래스의 특성을 요구할 수 있습니다. 이 작업을 수행하는 구식(pep 3119 이전) 방법은 추상 메서드가 호출될 때 추상 클래스에서 NotImplementedError를 발생시키기위한 것입니다. 물론 이 패턴은 컴파일 타임 형식 검사를 완전히 대체하는 것은 아닙니다. 그러나 클래스 계층 구조가 더 강력하고 쉽게 유지 관리 가능해진다는 것을 알게 되었습니다. ABC를 사용하면 프로그래머의 의도가 명확해져 코드가 보다 의사 소통할 수 있습니다. abc 모듈 설명서를 읽고이 패턴을 적용하는 것이 적합한 상황을 주의 깊게 주의깊게 파악하는 것이 좋습니다. 예제의 Base 클래스는 속성 getter 메서드의 추상 버전만 있으므로 인스턴스화할 수 없습니다. 이렇게 하면 클래스에 메서드가 강제로 있어야 합니다. 이러한 메서드는 추상 클래스에서 정의해야 합니다. 추상 클래스에서 상속되는 두 클래스를 정의하는 다음 예제에서는 올바른 방법을 수행합니다: 추상 클래스는 다른 클래스의 청사진으로 간주될 수 있으며, 모든 자식 클래스 내에서 만들어야 하는 메서드 집합을 만들 수 있습니다.

es는 추상 클래스에서 구축. 하나 또는 추상 메서드를 포함하는 클래스를 추상 클래스라고 합니다. 추상 메서드는 선언이 있지만 구현이 없는 메서드입니다.