クラスの継承

Python によるオブジェクト指向プログラミング

Alex Yarosh

Content Quality Analyst @ DataCamp

コード再利用

Python によるオブジェクト指向プログラミング

コード再利用

 

1. すでに誰かが作っている

 

  • モジュールは固定機能に有効
  • OOP は機能のカスタマイズに有効

複数の Python パッケージのロゴ

Python によるオブジェクト指向プログラミング

コード再利用

 

1. すでに誰かが作っている

 

2. DRY: 繰り返さない(Don't Repeat Yourself)

各種 GUI 要素

Python によるオブジェクト指向プログラミング

コード再利用

 

1. すでに誰かが作っている

 

2. DRY: 繰り返さない(Don't Repeat Yourself)

さまざまな GUI 要素は使わないで

Python によるオブジェクト指向プログラミング

継承

 

$$\Large{\text{新しいクラスの機能 = 既存クラスの機能 + 追加要素}}$$

Python によるオブジェクト指向プログラミング

アカウントクラス

Python によるオブジェクト指向プログラミング

口座から継承した貯蓄口座

Python によるオブジェクト指向プログラミング

2つのクラスが口座から継承

Python によるオブジェクト指向プログラミング

当座預金でメソッドを変更

Python によるオブジェクト指向プログラミング

クラス継承の実装

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

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

# 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 によるオブジェクト指向プログラミング

Passons à la pratique !

Python によるオブジェクト指向プログラミング

Preparing Video For Download...