Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
Tags
- 자바스크립트
- php
- oracle db
- 랜섬웨어
- 보안뉴스
- 자바스크립트 node
- 파이썬
- javascript
- 카카오프로젝트
- 자바스크립트 prototype
- numpy
- 다크웹
- 자바스크립트 element api
- ES6
- 자바스크립트 객체
- 보안뉴스요약
- 자바스크립트 기본 문법
- GIT
- 카카오프로젝트 100
- 보안뉴스 요약
- 카카오프로젝트100
- 보안뉴스한줄요약
- python
- 자바스크립트 API
- 깃허브
- oracle
- 자바스크립트 jQuery
- 보안뉴스 한줄요약
- 오라클
- Oracle SQL
Archives
- Today
- Total
FU11M00N
[Python] 추상 클래스 본문
- 추상 클래스
메소드의 이름만 가지고 있다가 상속받는 클래스에서 메소드 구현을 강제하기 위해 사용
상속을 통해서 자식 클래스에서 인스턴스를 생성해야함
- 추상클래스의 특징
• 자신의 인스턴스를 생성할 수 없음
• 추상 클래스는 오직 상속에서만 사용
• 각각의 독립된 공통적인 기능이 값을 공유하면 안되므로 구현하지 않은
메소드를 사용
- 추상 클래스를 정의할 때
-먼저 추상 클래스를 만들려면 import로 abc 모듈을 가져와야함(abc는 abstract base class의 약자)
-from abc import *
• 클래스의 ( ) 안에 metaclass=ABCMeta를 지정하고 메소드를 만들
때 위에 @abstractmethod 데코레이터를 붙여서 추상 메소드로 지
정
• 추상 메소드는 상속을 받은 하위 클래스에서 반드시 재정의 해야함
from abc import*
class StudentBase(metaclass=ABCMeta):
@abstractmethod
def study(self):
pass
def go_to_school(self):
pass
def greeting(self):
print("Hello")
class Student(StudentBase):
def study(self):
print("공부하기")
def go_to_school(self):
print("학교가기")
james = Student()
james.study()
from abc import *
class AbstractCountry(metaclass= ABCMeta):
name= "국가명"
population = "인구"
capital = "수도"
def show(self):
print("국가 클래스의 메소드 입니다")
@abstractmethod
def show_capital(self):
super().show_capital()
class Korea(AbstractCountry):
def __init__(self,name,population,capital):
self.name= name
self.population = population
self.capital = capital
def show_name(self):
print("국가 이름은 : ", self.name)
def show_capital(self):
print("{0} 수도는 {1} 입니다.".format(self.name, self.capital))
a= Korea("대한민국", 50000000 , "서울")
a.show_name()
a.show_capital()
#abc_crawlerBase.py
from abc import *
class CrawlerBase(metaclass= ABCMeta):
@abstractmethod
def run(self):
pass
@abstractmethod
def parse_html(self,text):
pass
#abc_daum_news_crawler.py
from abc_crawlerBase 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()
# abc_naver_news_crawler.py
from abc_crawlerBase import CrawlerBase
class NaverNewsCrawler(CrawlerBase):
def run(self):
print("naver run")
def parse_html(self,text):
pass
if __name__ == "__main__":
naver_news_crawler = NaverNewsCrawler()
naver_news_crawler.run()
'Programming > Python' 카테고리의 다른 글
[Python] Property (0) | 2020.11.24 |
---|---|
[Python] 다형성 (0) | 2020.11.24 |
[Python]다중 상속 (0) | 2020.11.24 |
[Python] 상속, 메소드 오버라이딩 (0) | 2020.11.17 |
[Python] 파이썬으로 구현한 연봉 인상율 프로그램 (0) | 2020.11.17 |
Comments