728x90
반응형
abc(abstract base class)
-
파이썬에서 추상 베이스 클래스(ABC)를 정의하기 위한 기반 구조를 제공한다.
-
추상 클래스는 메서드의 목록만 가진 클래스이며 상속받는 클래스에서 메서드를 구현하지 않으면 에러를 발생한다.
abc — 추상 베이스 클래스 — Python 3.8.5 문서
abc — 추상 베이스 클래스 소스 코드: Lib/abc.py 이 모듈은, PEP 3119에서 설명된 대로, 파이썬에서 추상 베이스 클래스 (ABC) 를 정의하기 위한 기반 구조를 제공합니다; 이것이 왜 파이썬에 추가되었�
docs.python.org
예제 1
추상 클래스에서 정의한 메서드를 구현하지 않으면 다음과 같이 에러를 발생합니다.
from abc import *
class CrawlerBase(ABC):
@abstractmethod
def run(self):
pass
@abstractmethod
def parse_html(self, text):
pass
class DaumNewsCrawler(Crawler):
def run(self):
print('run')
# def parse_html(self, text):
# pass
if __name__ == '__main__':
daum_news_crawler = DaumNewsCrawler()
daum_news_crawler.run()
TypeError: Can't instantiate abstract class DaumNewsCrawler with abstract methods parse_html
예제 2
추상 클래스를 import 해서 사용하기
crawer_base.py
from abc import *
class CrawlerBase(ABC):
@abstractmethod
def run(self):
pass
@abstractmethod
def parse_html(self, text):
pass
daum_news_crawer.py
from crawler_base import CrawlerBase
class DaumNewsCrawler(CrawlerBase):
def run(self):
print('daum run')
def parse_html(self, text):
pass
if __name__ == '__main__':
daum_news_crawler = DaumNewsCrawler()
daum_news_crawler.run()
naver_news_crawer.py
from crawler_base import CrawlerBase
class NaverNewsCrawler(CrawlerBase):
def run(self):
print('naver run')
def parse_html(self, text):
pass
if __name__ == '__main__':
daum_news_crawler = NaverNewsCrawler()
daum_news_crawler.run()
daum run
naver run
반응형
'Language > Python' 카테고리의 다른 글
파이썬 엘라스틱서치(Elasticsearch) 연동 -1 : 원격 설정 (0) | 2020.08.11 |
---|---|
파이썬 명령행 옵션, 인자 사용하기 : argparse (0) | 2020.08.10 |
파이썬 Tesseract 사용하기 -2 : 패키지 설치 / 예제 (0) | 2020.08.06 |
파이썬 Tesseract 사용하기 -1 : 설치 (0) | 2020.08.06 |
파이썬 wav 음악파일 재생하기 : pyaudio (0) | 2020.08.04 |