Languages/Python

[Python] 닀쀑상속, μΆ”μƒν΄λž˜μŠ€

μ •λ³΄λ³΄μ•ˆπŸŒ 2020. 11. 24. 12:24
λ°˜μ‘ν˜•
닀쀑 상속

 

• μ—¬λŸ¬ 개의 ν΄λž˜μŠ€λ‘œλΆ€ν„° μƒμ†λ°›λŠ” 경우

 

νŒŒμ΄μ¬μ€ 닀쀑 상속을 μ§€μ›ν•˜κ³  λΆ€λͺ¨ ν΄λž˜μŠ€μ— λ™μΌν•œ λ©”μ†Œλ“œλ‚˜ 속성이 μžˆμ„ λ•ŒλŠ” μ™Όμͺ½μ—μ„œλΆ€ν„° μš°μ„ κΆŒ 을 λΆ€μ—¬ ν•œλ‹€.

 

 

예제)

#1 예제
class Person:
    def greeting(self):
        print('μ•ˆλ…•ν•˜μ„Έμš”.')

class University:
    def manage_credit(self):
        print('학점관리')

class Undergraduate(Person, University):
    def study(self):
        print('κ³΅λΆ€ν•˜κΈ°')

sunja = Undergraduate()
sunja.greeting()
sunja.manage_credit()
sunja.study()

#2 예제
class Person:
    def sleep(self):
        print('sleep')

class Student(Person):
    def study(self):
        print('Study hard')

    def play(self):
        print('play with friends')

class Worker(Person):
    def work(self):
        print('Work hard')

    def play(self):
        print('drinks alone')
        
##닀쀑 상속##
class PartTimer(Student, Worker):
    def find_job(self):
        print('Find a job')

parttimer1 = PartTimer
parttimer1.study()
parttimer1.work()
parttimer1.play()

 

 

좔상 클래슀

 

- λ©”μ†Œλ“œμ˜ μ΄λ¦„λ§Œ 가지고 μžˆλ‹€κ°€ μƒμ†λ°›λŠ” ν΄λž˜μŠ€μ—μ„œ λ©”μ†Œλ“œ κ΅¬ν˜„ 을 κ°•μ œν•˜κΈ° μœ„ν•΄ μ‚¬μš©

 

- 상속을 ν†΅ν•΄μ„œ μžμ‹ ν΄λž˜μŠ€μ—μ„œ μΈμŠ€ν„΄μŠ€λ₯Ό 생성해야함

 

- μΆ”μƒν΄λž˜μŠ€μ˜ νŠΉμ§•

 

    • μžμ‹ μ˜ μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 수 μ—†μŒ

    • 좔상 ν΄λž˜μŠ€λŠ” 였직 μƒμ†μ—μ„œλ§Œ μ‚¬μš©

    • 각각의 λ…λ¦½λœ 곡톡적인 κΈ°λŠ₯이 값을 κ³΅μœ ν•˜λ©΄ μ•ˆλ˜λ―€λ‘œ κ΅¬ν˜„ν•˜μ§€ μ•Šμ€ λ©”μ†Œλ“œλ₯Ό μ‚¬μš©

 

 

예제 1)

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()

 

예제 2)

#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()
# 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_crawlerBase.py
from abc import *


class CrawlerBase(metaclass=ABCMeta):

    @abstractmethod
    def run(self):
        pass

    @abstractmethod
    def parse_html(self, text):
        pass
λ°˜μ‘ν˜•