콘솔워크

python 인터페이스 만들기 본문

프로그래밍/python

python 인터페이스 만들기

goddessana 2023. 5. 18. 17:44
반응형

사실 파이썬은 interface 를 단어 그 자체로서 존재하고 지원하는 언어는 아닙니다.

다만, https://peps.python.org/pep-3119/ 를 읽어보면 알 수 있듯이 추상 메서드와 같은 인터페이스 비슷한 문법을 제공합니다.

python 웹 스크래퍼 작성 중, 필히 구현되어야 하는 메서드들을 한데 묶어두고 관리해야 할 필요성을 느껴 인터페이스를 만들게 되었습니다. ( - 사실 best practice 인지는 모르겠습니다.)

from abc import ABC, abstractmethod


class BaseScrapper(ABC):
"""
모든 스크래퍼의 기본 스크래퍼입니다.
해당 클래스를 상속받는 클래스는 아래의 메서드를 필수로 구현해야 합니다.
"""

@abstractmethod
def run(self) -> dict:
"""run() 메서드로, 원하는 형식에 따라 해당 스크래퍼가 반환해야 할
dict 를 반환합니다."""
pass

위와 같이 ABC 를 상속받아, @abstractmethod 데코레이터를 붙여 클래스를 정의하면 저것은 `BaseScrapper()` 처럼 인스턴스를 바로 만들 수 없습니다.

그리고, `BaseScrapper` 를 상속받는 모든 메서드들은 run() 메서드를 필히 구현해야 하죠.

@abstractmethod 를 사용하고, ABC 를 상속받지 않거나 - metaclass=ABCMeta 코드를 사용하지 않는다면 @abstractmethod는 그 의미를 잃게 됩니다. 조심!

반응형