반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- pycdas.exe
- pywinauto 윈도우
- Python
- 가상환경설치
- uipath 입문
- Uipath 설치방법
- 네이버매물크롤링
- 네이버커머스API
- pywinauto 윈도우제어
- 커머스API
- venv 설치
- 네이버 로그인 영수증 해결
- 네이버 로그인 하기
- 파이썬 가상환경 설치
- Uipath 기초
- pywinauto
- pycdc.exe
- UiPath
- 파이썬 가상환경 설치방법
- 파이썬네이버부동산
- selenium
- Selenium 셀렉터잡기
- 네이버부동산크롤링
- 파이썬 네이버 로그인
- 네이버 로그인 캡챠해결
- 왕초보 파이썬 실행
- 파이썬 환경설정
- 날짜 정규식
- vscode venv 설치
- Element is not clickable at point
Archives
- Today
- Total
콘솔워크
python 인터페이스 만들기 본문
반응형
사실 파이썬은 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
class BaseScrapper(ABC):
"""
모든 스크래퍼의 기본 스크래퍼입니다.
해당 클래스를 상속받는 클래스는 아래의 메서드를 필수로 구현해야 합니다.
"""
@abstractmethod
def run(self) -> dict:
"""run() 메서드로, 원하는 형식에 따라 해당 스크래퍼가 반환해야 할
dict 를 반환합니다."""
pass
위와 같이 ABC 를 상속받아, @abstractmethod 데코레이터를 붙여 클래스를 정의하면 저것은 `BaseScrapper()` 처럼 인스턴스를 바로 만들 수 없습니다.
그리고, `BaseScrapper` 를 상속받는 모든 메서드들은 run() 메서드를 필히 구현해야 하죠.
@abstractmethod 를 사용하고, ABC 를 상속받지 않거나 - metaclass=ABCMeta 코드를 사용하지 않는다면 @abstractmethod는 그 의미를 잃게 됩니다. 조심!
반응형
'프로그래밍 > python' 카테고리의 다른 글
selenium이나 request로 크롤링을 하는 중 차단을 당한 경우 우회하는 방법 중 하나 (0) | 2023.05.25 |
---|---|
python, Enum에 접근할 때, 멤버의 이름을 변수로 받아서 사용하는 방법 (0) | 2023.05.22 |
pyqt5 -> pyside6로 변경할 시 주의할 점 (0) | 2023.05.18 |
flask return 시 한글 깨지는 현상 수정 (0) | 2023.05.16 |
특정 열의 정보가 같은 행끼리 모아서 새로운 dataframe을 만드는 법 (0) | 2023.05.15 |