本文へスキップ
BecomeCoder

Pythonコース · 第6章 クラスとモジュール ― 仕上げ · レッスン24

継承 ― 共通部分を引き継ぐ

ブラウザで完結

導入

似たクラスをいくつも作るとき、共通部分を1つの親クラスにまとめ、それを引き継ぐのが継承です。重複を減らせます。

説明

class 子(親): と書くと、親クラスの属性・メソッドを引き継ぎます。子クラスで同じ名前のメソッドを定義すると、上書き(オーバーライド)できます。共通部分は親にまとめ、違うところだけ子で持つ、という構図です。

flowchart TB
  animal["親 Animal<br/>name / speak()"]
  animal --> dog["子 Dog<br/>speak() を上書き → ワン"]
  animal --> cat["子 Cat<br/>speak() を上書き → ニャー"]
class Animal:
    def __init__(self, name):
        self.name = name
    def speak(self):
        return "..."

class Dog(Animal):          # Animal を継承
    def speak(self):        # speak を上書き
        return f"{self.name}: ワン"

class Cat(Animal):
    def speak(self):
        return f"{self.name}: ニャー"

animals = [Dog("ポチ"), Cat("タマ")]
for a in animals:
    print(a.speak())        # それぞれの speak が呼ばれる

DogCat__init__ は親のものをそのまま使っています。同じ speak() という呼び方で、種類ごとに違う結果になる――これがオブジェクト指向の便利さです。

やってみよう

Bird クラスを足して speakピヨ と鳴かせ、リストに加えて表示してみましょう。

演習

Animal を継承した Cow クラスを作り、speak名前: モー を返すようにして、Cow("ベル").speak() を表示してください。

ヒント1を見る

class Cow(Animal): の中で def speak(self): return f"{self.name}: モー"

実際に動かしてみよう

下のエディタにPythonを書いて「実行」を押すと、ブラウザ内のPythonで出力が表示されます。本文の例をそのまま試したり、書き換えたりしてみましょう(input() を使う回は「標準入力」欄に値を入れてから実行します)。

Python — ブラウザ内で実行

ブラウザ内でPythonを動かす環境(Skulpt)を読み込みます(初回のみ少し時間がかかります)。
スクロールして表示された時点でも自動で読み込まれます。