プログラミング上達のコツは学習初期段階でとにかく手を動かしてコーディングすることです。
本シリーズでは Python の初学者に向けたコーディング問題を出題します。
今回は クラスの継承とオーバーライド について学習します。コーディング指示に従ってコーディングしてみましょう!
学習の進め方
- プログラム説明および目的を確認し、どのようなプログラムで何を学ぶかイメージしましょう。
- コーディング指示に従ってコーディングをします。
もし分からなければ、コード例を確認しても良いです。 - 自分の出力結果と出力結果例を比較してみましょう。
- コード例を確認し、自分のコードと比較してみましょう。
コード例は「あくまでも例」なので完全に一致する必要はありません。 - 最終的にはコーディング指示だけでコーディングできるよう、繰り返し練習しましょう。
Python コーディング問題1: 動物クラスの継承
プログラム説明
このプログラムは、動物を表現する基底クラスと、それを継承する派生クラスを作成します。基底クラスでは動物の基本的なメソッドを定義し、派生クラスでは特定の動物のメソッドを追加またはオーバーライドします。
目的
このプログラムを通じて、学習者はクラスの継承とメソッドのオーバーライドの基本的な概念を理解し、実際にそれらを使ってコードを作成する方法を学びます。
コーディング指示
新しいPythonファイル animal_inheritance25_1.py を作成する
- 任意のエディタを開き、新しいファイルを作成します。
- ファイル名を
animal_inheritance25_1.pyとして保存します。
動物を表現する Animal クラスを定義する
Animalクラスを作成し、以下のメソッドを定義します:make_soundメソッド:printで “Some generic animal sound” と表示します。
Animal クラスを継承する Dog クラスを定義する
Dogクラスを作成し、以下のメソッドを定義します:make_soundメソッド:printで “Woof” と表示します(メソッドのオーバーライド)。fetchメソッド:printで “Dog is fetching!” と表示します。
メインプログラムを作成する
Animalクラスのインスタンスを生成し、make_soundメソッドを呼び出します。Dogクラスのインスタンスを生成し、make_soundメソッドとfetchメソッドを呼び出します。
出力結果例
タップして出力結果例を表示

Python コード例
タップしてコードを表示
# 基底クラス Animal を定義
class Animal:
"""動物を表現するクラス"""
# 動物の一般的な音を出すメソッド
def make_sound(self):
print("Some generic animal sound")
# 派生クラス Dog を定義
class Dog(Animal):
"""犬を表現するクラス"""
# オーバーライドして犬の音を出すメソッド
def make_sound(self):
print("Woof")
# 犬が物を取ってくる動作を表現するメソッド
def fetch(self):
print("Dog is fetching!")
# メインプログラム
# Animal クラスのインスタンスを生成してメソッドを呼び出す
animal = Animal()
animal.make_sound()
# Dog クラスのインスタンスを生成してメソッドを呼び出す
dog = Dog()
dog.make_sound() # オーバーライドされたメソッドが呼び出される
dog.fetch() # Dog クラスに追加されたメソッドが呼び出される
Python コーディング問題2: 乗り物クラスの継承とオーバーライド
プログラム説明
このプログラムは、乗り物を表現する基底クラスと、それを継承する派生クラスを作成します。基底クラスでは乗り物の基本的なメソッドを定義し、派生クラスでは特定の乗り物のメソッドを追加またはオーバーライドします。
目的
このプログラムを通じて、学習者はクラスの継承とメソッドのオーバーライドの基本的な概念を理解し、実際にそれらを使ってコードを作成する方法を学びます。
コーディング指示
新しいPythonファイル vehicle_inheritance25_2.py を作成する
- 任意のエディタを開き、新しいファイルを作成します。
- ファイル名を
vehicle_inheritance25_2.pyとして保存します。
乗り物を表現する Vehicle クラスを定義する
Vehicleクラスを作成し、以下のメソッドを定義します:moveメソッド:printで “The vehicle is moving” と表示します。
Vehicle クラスを継承する Car クラスを定義する
Carクラスを作成し、以下のメソッドを定義します:moveメソッド:printで “The car is driving” と表示します(メソッドのオーバーライド)。honkメソッド:printで “The car is honking” と表示します。
メインプログラムを作成する
Vehicleクラスのインスタンスを生成し、moveメソッドを呼び出します。Carクラスのインスタンスを生成し、moveメソッドとhonkメソッドを呼び出します。
出力結果例
タップして出力結果例を表示

Python コード例
タップしてコード例を表示
# 基底クラス Vehicle を定義
class Vehicle:
"""乗り物を表現するクラス"""
# 乗り物の動きを表現するメソッド
def move(self):
print("The vehicle is moving")
# 派生クラス Car を定義
class Car(Vehicle):
"""車を表現するクラス"""
# オーバーライドして車の動きを表現するメソッド
def move(self):
print("The car is driving")
# 車のクラクションを表現するメソッド
def honk(self):
print("The car is honking")
# メインプログラム
# Vehicle クラスのインスタンスを生成してメソッドを呼び出す
vehicle = Vehicle()
vehicle.move()
# Car クラスのインスタンスを生成してメソッドを呼び出す
car = Car()
car.move() # オーバーライドされたメソッドが呼び出される
car.honk() # Car クラスに追加されたメソッドが呼び出される
Python コーディング問題3: 音楽プレイヤーのクラス設計
プログラム説明
このプログラムは、音楽プレイヤーの基底クラスと、それを継承する派生クラスを作成します。基底クラスで再生の基本的な機能を提供し、派生クラスで具体的な再生方法を実装します。さらに、派生クラスで基底クラスのメソッドをオーバーライドし、必要に応じて親クラスのメソッドを呼び出します。
目的
このプログラムを通じて、学習者はクラスの継承、メソッドのオーバーライド、データ隠蔽、および super() を使用して親クラスのメソッドを明示的に呼び出す方法を学びます。
コーディング指示
新しいPythonファイル music_player25_3.py を作成する
- 任意のエディタを開き、新しいファイルを作成します。
- ファイル名を
music_player25_3.pyとして保存します。
音楽プレイヤーを表現する MusicPlayer クラスを定義する
MusicPlayerクラスを作成し、以下のメソッドを定義します:playメソッド:printで “Playing music” と表示します。
MusicPlayer クラスを継承する MP3Player クラスを定義する
MP3Playerクラスを作成し、以下のメソッドを定義します:playメソッド:printで “Playing MP3 music” と表示します(メソッドのオーバーライド)。play_parentメソッド:super().play()を使って親クラスのplayメソッドを呼び出します。
メインプログラムを作成する
MusicPlayerクラスのインスタンスを生成し、playメソッドを呼び出します。MP3Playerクラスのインスタンスを生成し、playメソッドとplay_parentメソッドを呼び出します。
出力結果例
タップして出力結果例を表示

Python コード例
タップしてコード例を表示
# 基底クラス MusicPlayer を定義
class MusicPlayer:
"""音楽プレイヤーを表現するクラス"""
# 音楽を再生するメソッド
def play(self):
print("Playing music")
# 派生クラス MP3Player を定義
class MP3Player(MusicPlayer):
"""MP3プレイヤーを表現するクラス"""
# オーバーライドしてMP3音楽を再生するメソッド
def play(self):
print("Playing MP3 music")
# 親クラスのメソッドを呼び出すメソッド
def play_parent(self):
super().play()
# メインプログラム
# MusicPlayer クラスのインスタンスを生成してメソッドを呼び出す
player = MusicPlayer()
player.play() # "Playing music" と表示される
# MP3Player クラスのインスタンスを生成してメソッドを呼び出す
mp3_player = MP3Player()
mp3_player.play() # "Playing MP3 music" と表示される
mp3_player.play_parent() # "Playing music" と表示される
Python コーディング問題4: 家電製品のクラス設計
プログラム説明
このプログラムは、家電製品の基底クラスと、それを継承する派生クラスを作成します。基底クラスで基本的な電源操作を提供し、派生クラスで具体的な操作を実装します。さらに、派生クラスで基底クラスのメソッドをオーバーライドし、必要に応じて親クラスのメソッドを呼び出します。
目的
このプログラムを通じて、学習者はクラスの継承、メソッドのオーバーライド、データ隠蔽、および super() を使用して親クラスのメソッドを明示的に呼び出す方法を学びます。
コーディング指示
新しいPythonファイル home_appliance25_4.py を作成する
- 任意のエディタを開き、新しいファイルを作成します。
- ファイル名を
home_appliance25_4.pyとして保存します
家電製品を表現する Appliance クラスを定義する
Applianceクラスを作成し、以下のメソッドを定義します:turn_onメソッド:printで “The appliance is now on” と表示します。
Appliance クラスを継承する WashingMachine クラスを定義する
WashingMachineクラスを作成し、以下のメソッドを定義します:turn_onメソッド:printで “The washing machine is now on” と表示します(メソッドのオーバーライド)。start_washメソッド:printで “Starting the wash cycle” と表示します。turn_on_parentメソッド:super().turn_on()を使って親クラスのturn_onメソッドを呼び出します。
メインプログラムを作成する
Applianceクラスのインスタンスを生成し、turn_onメソッドを呼び出します。WashingMachineクラスのインスタンスを生成し、turn_onメソッド、start_washメソッド、turn_on_parentメソッドを呼び出します。
出力結果例
タップして出力結果例を表示

Python コード例
タップしてコード例を表示
# 基底クラス Appliance を定義
class Appliance:
"""家電製品を表現するクラス"""
# 家電製品の電源を入れるメソッド
def turn_on(self):
print("The appliance is now on")
# 派生クラス WashingMachine を定義
class WashingMachine(Appliance):
"""洗濯機を表現するクラス"""
# オーバーライドして洗濯機の電源を入れるメソッド
def turn_on(self):
print("The washing machine is now on")
# 洗濯機の洗浄サイクルを開始するメソッド
def start_wash(self):
print("Starting the wash cycle")
# 親クラスのメソッドを呼び出すメソッド
def turn_on_parent(self):
super().turn_on()
# メインプログラム
# Appliance クラスのインスタンスを生成してメソッドを呼び出す
appliance = Appliance()
appliance.turn_on() # "The appliance is now on" と表示される
# WashingMachine クラスのインスタンスを生成してメソッドを呼び出す
washing_machine = WashingMachine()
washing_machine.turn_on() # "The washing machine is now on" と表示される
washing_machine.start_wash() # "Starting the wash cycle" と表示される
washing_machine.turn_on_parent() # "The appliance is now on" と表示される
プログラミングは実際に手を動かしながら理解を深めることが大切です。次回も引き続き、コーディング問題を解きながらスキルを磨いていきましょう!(参考:Python公式日本語ドキュメント)










