클래스 상속

Python 객체 지향 프로그래밍 입문

George Boorman

Curriculum Manager, DataCamp

코드 재사용

 

1. 이미 누군가 해두었다

 

  • 패키지는 고정 기능에 적합함
  • OOP는 기능 커스터마이징에 적합함

여러 파이썬 패키지 로고

Python 객체 지향 프로그래밍 입문

코드 재사용

 

1. 이미 누군가 해두었다

 

2. DRY: 반복하지 말 것

다양한 GUI 요소

Python 객체 지향 프로그래밍 입문

코드 재사용

 

1. 이미 누군가 해두었다

 

2. DRY: 반복하지 말 것

다양한 GUI 요소를 사용하지 마세요

Python 객체 지향 프로그래밍 입문

상속

 

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

Python 객체 지향 프로그래밍 입문

예시 계층 구조

BankAccount 클래스

Python 객체 지향 프로그래밍 입문

예시 계층 구조

BankAccount를 상속하는 SavingsAccount

Python 객체 지향 프로그래밍 입문

예시 계층 구조

BankAccount를 상속하는 CheckingAccount도 있음

Python 객체 지향 프로그래밍 입문

예시 계층 구조

CheckingAccount는 withdraw 메서드를 수정함

Python 객체 지향 프로그래밍 입문

클래스 상속 구현

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

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


# BankAccount를 상속하는 클래스 class SavingsAccount(BankAccount): pass
  • BankAccount: 기능이 확장/상속되는 부모 클래스
  • SavingsAccount: 기능을 상속하고 추가할 자식/하위 클래스
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...