클래스 상속

Python의 객체 지향 프로그래밍

Alex Yarosh

Content Quality Analyst @ DataCamp

코드 재사용

Python의 객체 지향 프로그래밍

코드 재사용

 

1. 누군가 이미 만들어 둠

 

  • 모듈: 고정 기능에 적합
  • OOP: 기능 커스터마이즈에 적합

여러 파이썬 패키지 로고

Python의 객체 지향 프로그래밍

코드 재사용

 

1. 누군가 이미 만들어 둠

 

2. DRY: 반복하지 말 것

여러 GUI 요소

Python의 객체 지향 프로그래밍

코드 재사용

 

1. 누군가 이미 만들어 둠

 

2. DRY: 반복하지 말 것

여러 GUI 요소는 쓰지 말 것

Python의 객체 지향 프로그래밍

상속

 

$$\Large{\text{새 클래스 기능 = 기존 클래스 기능 + 추가}}$$

Python의 객체 지향 프로그래밍

account 클래스

Python의 객체 지향 프로그래밍

account에서 상속된 savings account

Python의 객체 지향 프로그래밍

account에서 상속된 두 클래스

Python의 객체 지향 프로그래밍

checking account에서 수정된 메서드

Python의 객체 지향 프로그래밍

클래스 상속 구현

class BankAccount:
    def __init__(self, balance):
       self.balance = balance

    def withdraw(self, amount):
        self.balance -= amount

# Empty class inherited from BankAccount
class SavingsAccount(BankAccount):
    pass

class MyChild(MyParent):
   # Do stuff here
  • MyParent: 기능이 확장/상속되는 클래스
  • MyChild: 기능을 상속받아 추가하는 클래스
Python의 객체 지향 프로그래밍

자식 클래스는 부모 데이터 모두 보유

# BankAccount의 생성자 상속
savings_acct = SavingsAccount(1000)
type(savings_acct)
__main__.SavingsAccount
# BankAccount의 속성 상속
savings_acct.balance
1000
# BankAccount의 메서드 상속
savings_acct.withdraw(300)
Python의 객체 지향 프로그래밍

상속: "is-a" 관계

SavingsAccountBankAccount입니다

(특별 기능이 있을 수 있음)

savings_acct = SavingsAccount(1000)
isinstance(savings_acct, SavingsAccount)
True
isinstance(savings_acct, BankAccount)
True

 

 

acct = BankAccount(500)
isinstance(acct,SavingsAccount)
False
isinstance(acct,BankAccount)
True
Python의 객체 지향 프로그래밍

연습해 봅시다!

Python의 객체 지향 프로그래밍

Preparing Video For Download...