반응형
파이썬에서 추상 클래스와 인터페이스의 차이점은 무엇입니까?
해결 방법
때때로 보게되는 것은 다음과 같습니다.
class Abstract1( object ):
"""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( object ):
pass # lots of stuff - but missing something
class Mixin1( object ):
def something( self ):
pass # one implementation
class Mixin2( object ):
def something( self ):
pass # another
class Concrete1( SomeAbstraction, Mixin1 ):
pass
class Concrete2( SomeAbstraction, Mixin2 ):
pass
이것은 믹스 인과 함께 일종의 추상 슈퍼 클래스를 사용하여 분리 된 구체적인 하위 클래스를 만듭니다.
참조 페이지 https://stackoverflow.com/questions/372042
반응형
'파이썬' 카테고리의 다른 글
파이썬 사전에서 무작위로 하나의 키를 선택하는 방법 (0) | 2020.11.04 |
---|---|
파이썬 Python에서 CSV에서 배열로 변환 (0) | 2020.11.04 |
파이썬 가져올 때 변수 전달 (0) | 2020.11.03 |
파이썬 Pip - Fatal error in launcher: Unable to create process using '"' (0) | 2020.11.03 |
파이썬 서버에서 지원하지 않는 SMTP AUTH 확장 (0) | 2020.11.03 |
댓글