파이썬 추상클래스 예제

파이썬 추상클래스 예제

이러한 개념에 대한 데모를 보려면 이 예제 ABC 정의를 살펴보십시오: 새 (기본) 클래스를 만들 때 다음과 같이 하위 클래스 개체로 만듭니다: MyBaseClass(개체): 더 이상 그다지 중요한 지 모르겠지만 추상 클래스에서 파생 된 코드 A 클래스의 스타일 일관성을 유지하는 데 도움이되며 모든 추상 메서드를 재정의하지 않으면 인스턴스화 할 수 없습니다. 이 경우 일반 파이썬 클래스 관리는 플러그인 구현을 추상 적 플러그인 베이스를 구현하는 것으로 인식하는 데 사용됩니다. 일부 구성 요소만 추상적인 경우 하위 클래스에서 구체적인 속성을 만들기 위해 해당 구성 요소만 업데이트하면 됩니다. __mro___ 목록을 통해 액세스되는 클래스도 MyIterable으로 간주됩니다. 이것은 abc 모듈을 사용하는 것과 동일한 좋은 속성을 가지고 있지 않습니다. 추상 기본 클래스 자체를 인스턴스화할 수 있으며 런타임에서 추상 메서드를 호출할 때까지 실수를 찾을 수 없습니다. 이 메서드는 True, False 또는 구현되지 않음을 반환해야 합니다. True를 반환하는 경우 하위 클래스는 이 ABC의 하위 클래스로 간주됩니다. False를 반환하는 경우 하위 클래스는 일반적으로 해당 경우에도 이 ABC의 하위 클래스로 간주되지 않습니다. Not구현되지 않은 것을 반환하면 하위 클래스 검사는 일반적인 메커니즘으로 계속됩니다. 기본 제공 속성()의 하위 클래스로, 추상 속성을 나타냅니다. 후드 아래: 콘크리트작업 콘크리트 클래스가 인스턴스화되기 전에 ConcreteOperation 메타클래스는 모든 @abstractmethod 장식된 메서드가 구현되었는지 확인합니다.

개체 클래스가 클래스의 인스턴스가 어떻게 행동하는지 정의하는 것처럼 메타클래스는 클래스의 행동 방식을 정의합니다. 이 메타클래스를 사용하여 ABC를 만듭니다. ABC는 직접 하위 클래스로 분류한 다음 혼합 클래스로 작동할 수 있습니다. 당신은 또한 “가상 하위 클래스”로 관련없는 콘크리트 클래스 (심지어 내장 클래스)와 관련이없는 ABC를 등록 할 수 있습니다 – 이러한 하위 클래스는 내장 issubclass () 함수에 의해 등록 ABC의 하위 클래스로 간주되지만, 등록 ABC MRO (방법 해결 순서)에 나타나지 않으며 등록 ABC에 의해 정의 된 메서드 구현은 호출 할 수 있습니다 (super()를 통해서도). 1 추상 기본 클래스(ABC)는 파생 된 클래스가 기본 클래스에서 특정 메서드를 구현하도록 합니다. 이 자습서에서는 추상 기본 클래스의 이점과 Python의 기본 제공 ABC 모듈로 정의하는 방법에 대해 알아봅니다. 직접 하위 클래스를 사용하는 부작용은 기본 클래스에 해당 클래스에서 파생된 알려진 클래스 목록을 요청하여 플러그인의 모든 구현을 찾을 수 있다는 것입니다(이것은 abc 기능이 아니며 모든 클래스가 이 작업을 수행할 수 있음). 파이썬 3에서 작동하는 예제를 찾고 있다면 사이트의 PyMOTW-3 섹션을 참조하십시오. 우리의 예제는 추상 클래스와는 아무 상관이 없는 간단한 상속의 경우를 구현 했습니다. 사실, 파이썬 자체에서 추상 클래스를 제공하지 않습니다. 그러나 파이썬에는 추상 기본 클래스 (ABC)를 정의하는 인프라를 제공하는 모듈이 함께 제공됩니다.

이 모듈은 호출 – 명백한 이유로 – abc. 물론 이 패턴은 컴파일 타임 형식 검사를 완전히 대체하는 것은 아닙니다. 그러나 클래스 계층 구조가 더 강력하고 쉽게 유지 관리 가능해진다는 것을 알게 되었습니다. ABC를 사용하면 프로그래머의 의도가 명확해져 코드가 보다 의사 소통할 수 있습니다. abc 모듈 설명서를 읽고이 패턴을 적용하는 것이 적합한 상황을 주의 깊게 주의깊게 파악하는 것이 좋습니다.

0

You may also like