ポリモーフィズム(多態性)は、オブジェクト指向プログラミング(OOP)の基本概念の一つで、異なるクラスのオブジェクトが、同じインターフェースを使って操作できることを意味します。これにより、異なる型のオブジェクトを同一のコードで扱うことが可能になります。Pythonでは、この特性を利用して、コードの再利用性と柔軟性を高めることができます。
ポリモーフィズムの基本概念
- メソッドのオーバーライド(Method Overriding):
- 子クラスが親クラスのメソッドを再定義することを指します。これにより、親クラスと同じ名前のメソッドを持つが、子クラス独自の振る舞いを持つことができます。
- ダックタイピング(Duck Typing):
- オブジェクトの型ではなく、そのオブジェクトが持つメソッドや属性によってオブジェクトを判断するPython特有のポリモーフィズムです。「もしそれがアヒルのように歩き、アヒルのように鳴くなら、それはアヒルである」という考え方に基づいています。
各科目の説明と例
1. メソッドのオーバーライド
メソッドのオーバーライドを使用すると、子クラスで親クラスのメソッドを再定義できます。
例:
class Animal:
def speak(self):
return "Some sound"
class Dog(Animal):
def speak(self):
return "Woof!"
class Cat(Animal):
def speak(self):
return "Meow!"
animals = [Dog(), Cat(), Animal()]
for animal in animals:
print(animal.speak())
出力:
Woof! Meow! Some sound
2. ダックタイピング
Pythonでは、オブジェクトの型に依存せず、そのオブジェクトが持つメソッドや属性を利用することができます。
例:
class Duck:
def sound(self):
return "Quack!"
class Dog:
def sound(self):
return "Woof!"
def make_sound(animal):
print(animal.sound())
duck = Duck()
dog = Dog()
make_sound(duck) # 出力: Quack!
make_sound(dog) # 出力: Woof!
ポリモーフィズムの利点
- コードの柔軟性: 異なるクラスのオブジェクトを同一のインターフェースで扱うことができ、コードが柔軟になります。
- 再利用性の向上: 一度書いたコードを異なるオブジェクトに対して使い回すことができ、再利用性が高まります。
- 保守性の向上: 新しいクラスを追加する際に既存のコードを変更せずに済むため、保守性が向上します。
これらの例と参考文献を通じて、Pythonのポリモーフィズムの基本的な使い方とその応用方法を理解することができます。ポリモーフィズムを適切に利用することで、コードの柔軟性と再利用性が向上し、保守しやすいプログラムを作成することができます。
