728x90
abc(abstract base class)
-
파이썬에서 추상 베이스 클래스(ABC)를 정의하기 위한 기반 구조를 제공한다.
-
추상 클래스는 메서드의 목록만 가진 클래스이며 상속받는 클래스에서 메서드를 구현하지 않으면 에러를 발생한다.
예제 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 |