ポリモーフィズム
ポリモーフィズムによって柔軟で動的なコードを実現する方法を学びます。
「ポリモーフィズム」はCoddyKit上の無料Python Academyレッスンです。 これはレッスン4/6です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPython Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Python Academyコースには全6レッスンが含まれています。
ポリモーフィズム入門
ポリモーフィズム入門
ポリモーフィズムは、オブジェクト指向プログラミング(OOP)の中心的な概念です。異なるクラスのオブジェクトを、共通のスーパークラスのオブジェクトとして扱えるようにします。コードに柔軟性と再利用性をもたらします。
このレッスンでは、メソッドとクラスを使って Python でポリモーフィズムを実装する方法を学びます。

ポリモーフィズムとは
ポリモーフィズムとは
ポリモーフィズムを使うと、異なるクラスのメソッドに同じ名前を付けながら、それぞれ異なる動作をさせることができます。コードの柔軟性が高まり、拡張しやすくなります。
# Defining a superclass
class Animal:
# Method in the superclass
def speak(self):
print("Animal speaks") # Generic message for all animals
# Defining a subclass that overrides the speak method
class Dog(Animal):
def speak(self):
print("Dog barks") # Specific behavior for Dogメソッドによるポリモーフィズム
メソッドによるポリモーフィズム
異なるクラスに同じ名前のメソッドを定義し、それぞれ異なる実装を提供できます。
# Another subclass with its own implementation of the speak method
class Cat(Animal):
def speak(self):
print("Cat meows") # Specific behavior for Cat
# Function demonstrating polymorphism
# It can accept objects of any subclass of Animal
def animal_sound(animal):
animal.speak() # Calls the appropriate speak method based on the object type
# Creating objects of Dog and Cat
dog = Dog()
cat = Cat()
# Calling the function with different objects
animal_sound(dog) # Outputs: Dog barks
animal_sound(cat) # Outputs: Cat meowsメソッドによるポリモーフィズムの例
メソッドによるポリモーフィズム
異なるクラスに同じ名前のメソッドを定義し、それぞれ異なる実装を提供できます。
# Another subclass with its own implementation of the speak method
class Cat(Animal):
def speak(self):
print("Cat meows") # Specific behavior for Cat
# Function demonstrating polymorphism
# It can accept objects of any subclass of Animal
def animal_sound(animal):
animal.speak() # Calls the appropriate speak method based on the object type
# Creating objects of Dog and Cat
dog = Dog()
cat = Cat()
# Calling the function with different objects
animal_sound(dog) # Outputs: Dog barks
animal_sound(cat) # Outputs: Cat meows関数によるポリモーフィズム
関数によるポリモーフィズム
ポリモーフィズムを使うと、同じ関数で異なる型のオブジェクトを操作できます。
# Defining two unrelated classes
class Bird:
def fly(self):
print("Bird flies") # Behavior specific to birds
class Plane:
def fly(self):
print("Plane flies") # Behavior specific to planes
# Function demonstrating polymorphism
# It can accept objects of both Bird and Plane
def flying_object(obj):
obj.fly() # Calls the appropriate fly method based on the object type
# Creating objects of Bird and Plane
bird = Bird()
plane = Plane()
# Calling the function with different objects
flying_object(bird) # Outputs: Bird flies
flying_object(plane) # Outputs: Plane flies継承によるポリモーフィズム
継承によるポリモーフィズム
ポリモーフィズムは、サブクラスがスーパークラスのメソッドをオーバーライドする継承によって実現されることがよくあります。
# Superclass representing a generic vehicle
class Vehicle:
def start(self):
print("Vehicle starts") # Generic behavior for all vehicles
# Subclass representing a specific type of vehicle
class Car(Vehicle):
def start(self):
print("Car starts") # Specific behavior for cars
# Subclass representing another specific type of vehicle
class Bike(Vehicle):
def start(self):
print("Bike starts") # Specific behavior for bikes
# Function demonstrating polymorphism
# It can accept objects of any subclass of Vehicle
def start_vehicle(vehicle):
vehicle.start() # Calls the appropriate start method based on the object type
# Creating objects of Car and Bike
car = Car()
bike = Bike()
# Calling the function with different objects
start_vehicle(car) # Outputs: Car starts
start_vehicle(bike) # Outputs: Bike startsポリモーフィズムの利点
ポリモーフィズムの利点
ポリモーフィズムには、次のような利点があります。
- コードの再利用性と柔軟性が高まる。
- コードの可読性と整理しやすさが向上する。
- 共通インターフェースの利用を促進する。
現実世界の例
現実世界の例
ここでは、ポリモーフィズムを使った現実世界の例を見てみましょう。
# Real-world example of polymorphism
class Developer:
def work(self):
print("Writing code") # Specific task for developers
class Designer:
def work(self):
print("Designing user interfaces") # Specific task for designers
# Function demonstrating polymorphism
# It can accept objects of both Developer and Designer
def workday(employee):
employee.work() # Calls the appropriate work method based on the object type
# Creating objects of Developer and Designer
developer = Developer()
designer = Designer()
# Calling the function with different objects
workday(developer) # Outputs: Writing code
workday(designer) # Outputs: Designing user interfacesポリモーフィズムでよくある間違い
ポリモーフィズムでよくある間違い
次のような間違いに注意してください。
- 必要な場合にサブクラスでメソッドをオーバーライドし忘れる。
- 多重継承におけるメソッド解決順序(MRO)を混同する。
- 単純な処理にポリモーフィズムを不必要に使う。
学んだこと
学んだこと
このレッスンでは、次のことを学びました。
- ポリモーフィズムとは何か、Python でどのように機能するか。
- メソッドと継承を使ってポリモーフィズムを実装する方法。
- OOP でポリモーフィズムを使う利点。
よくできました。次のトピックに進みましょう。

よくある質問
「ポリモーフィズム」レッスンは無料ですか?
はい。「ポリモーフィズム」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Python Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Python Academyコースには全6レッスンが含まれています。
「ポリモーフィズム」で何を学びますか?
ポリモーフィズムによって柔軟で動的なコードを実現する方法を学びます。 ブラウザで直接実行するハンズオンコードでPython Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Python Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのPython Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/6です。
「ポリモーフィズム」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このPython Academyレッスンでコードを書いて実行できますか?
はい。すべてのPython Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。