728x90
반응형
질문 : 파이썬에서 추상 클래스와 인터페이스의 차이점
파이썬에서 추상 클래스와 인터페이스의 차이점은 무엇입니까?
답변
때때로 보게되는 것은 다음과 같습니다.
class Abstract1:
"""Some description that tells you it's abstract,
often listing the methods you're expected to supply."""
def aMethod(self):
raise NotImplementedError("Should have implemented this")
Python에는 공식적인 인터페이스 계약이 없으며 필요하지 않기 때문에 추상화와 인터페이스 사이의 Java 스타일 구분이 존재하지 않습니다. 누군가가 공식 인터페이스를 정의하려는 노력을한다면 그것은 또한 추상 클래스가 될 것입니다. 유일한 차이점은 독 스트링에 명시된 의도에 있습니다.
그리고 추상과 인터페이스의 차이점은 오리 타이핑을 할 때 머리가 쪼개지는 것입니다.
Java는 다중 상속이 없기 때문에 인터페이스를 사용합니다.
Python에는 다중 상속이 있으므로 다음과 같은 내용도 볼 수 있습니다.
class SomeAbstraction:
pass # lots of stuff - but missing something
class Mixin1:
def something(self):
pass # one implementation
class Mixin2:
def something(self):
pass # another
class Concrete1(SomeAbstraction, Mixin1):
pass
class Concrete2(SomeAbstraction, Mixin2):
pass
이것은 믹스 인과 함께 일종의 추상 슈퍼 클래스를 사용하여 분리 된 구체적인 하위 클래스를 만듭니다.
출처 : https://stackoverflow.com/questions/372042/difference-between-abstract-class-and-interface-in-python
728x90
반응형
'프로그래밍 언어 > Python' 카테고리의 다른 글
파이썬에서 16 진수 문자열을 int로 변환 (0) | 2021.06.22 |
---|---|
Python에서 환경 변수를 설정하는 방법 (0) | 2021.06.18 |
Python 사전 검색 목록 (0) | 2021.06.18 |
"JSON 직렬화 가능하지 않은 datetime.datetime"을 극복하는 방법 (0) | 2021.06.16 |
파이썬의 자식 클래스에서 부모 클래스의 메서드를 호출하는 방법 (0) | 2021.06.16 |