Pythonの継承には、ちょっと面白い特徴があるんだ。それは、「多重継承(たじゅうけいしょう)」というものだよ。
これは、一つの子クラスが、複数の親クラスから機能を引き継ぐことができる、というものなんだ。まるで、いろんなキャラクターの特技を、全部まとめて持っているスーパーヒーローを作るみたいな感じだね!
例えば、空を飛べる能力を持つ「鳥」のクラスと、泳げる能力を持つ「魚」のクラスがあったとするよね。この二つの能力をどちらも持つ「空飛ぶ魚」なんていうクラスを作りたいときに、多重継承が役立つんだ。
書き方は、子クラスのカッコの中に、カンマ(,
)で区切って、引き継ぎたい親クラスの名前を並べて書くだけだよ。
# 親クラス1:Flyer(飛ぶ能力)
class Flyer:
def fly(self):
print("空を飛んでいます!")
# 親クラス2:Swimmer(泳ぐ能力)
class Swimmer:
def swim(self):
print("水中を泳いでいます!")
# 子クラス:FlyingFish(空飛ぶ魚)。FlyerとSwimmerの両方を継承するよ!
class FlyingFish(Flyer, Swimmer):
def __init__(self, name):
self.name = name
print(self.name + "が生まれました!")
fishy = FlyingFish("ピョン吉")
fishy.fly() # Flyerクラスのflyメソッドが使える!
fishy.swim() # Swimmerクラスのswimメソッドも使える!
# 出力:
# ピョン吉が生まれました!
# 空を飛んでいます!
# 水中を泳いでいます!
これで、FlyingFishクラスは、Flyerクラスのfly()
メソッドと、Swimmerクラスのswim()
メソッドの両方を使うことができるようになったね!
多重継承はとても強力な機能だけど、ちょっと注意が必要なこともあるんだ。もし、複数の親クラスに同じ名前のメソッドがあった場合、Pythonはどのメソッドを使えばいいか、決まった順番(MRO: Method Resolution Orderというルール)で探していくんだ。
最初は少し難しいかもしれないけど、こんな機能もあるんだなってことを知っておくと、将来もっと複雑なプログラムを作る時に役立つはずだよ!