본문 바로가기
파이썬

파이썬에서 추상 클래스와 인터페이스의 차이점

by º기록 2020. 11. 4.
반응형

파이썬에서 추상 클래스와 인터페이스의 차이점은 무엇입니까?

 

해결 방법

 

때때로 보게되는 것은 다음과 같습니다.

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

 

 

반응형

댓글