Pythonでは、既存のクラスを継承して新しいクラスを作成することができます。継承によって、既存のクラスの機能を再利用したり、新しい機能を追加したりできます。Pythonでは、単一継承と多重継承の両方がサポートされています。
単一継承の例
以下の例では、親クラスとして「Animal」クラスを定義し、子クラスとして「Dog」クラスを定義しています。Dogクラスは、Animalクラスを継承し、新しい「bark」メソッドを追加しています。
class Animal: def __init__(self, name): self.name = name def speak(self): pass class Dog(Animal): def bark(self): return "Woof" my_dog = Dog("Rufus") print(my_dog.name) # Output: Rufus print(my_dog.bark()) # Output: Woof
上記の例では、Dog
クラスはAnimal
クラスを継承しています。このため、Dog
クラスはAnimal
クラスのname
属性を継承しています。そして、Dog
クラスにbark
メソッドを追加しています。最後に、Dog
クラスのインスタンスを作成し、name
属性とbark
メソッドを使用しています。
多重継承の例
以下の例では、Car
クラスとElectricCar
クラスを定義し、ElectricCar
クラスがCar
クラスを継承することで、新しいcharge
メソッドを追加しています。また、ElectricCar
クラスは、Car
クラスとは異なる親クラスであるBattery
クラスを継承し、新しいget_range
メソッドを追加しています。
class Car: def __init__(self, make, model, year): self.make = make self.model = model self.year = year def start(self): print("Engine started") class Battery: def __init__(self, battery_size=75): self.battery_size = battery_size def get_range(self): range = self.battery_size * 5 print(f"This car can go {range} miles on a full charge.") class ElectricCar(Car, Battery): def __init__(self, make, model, year, battery_size=75): Car.__init__(self, make, model, year) Battery.__init__(self, battery_size) def charge(self): print("Battery charged") my_electric_car = ElectricCar("Tesla", "Model S", 2020, 100) print(my_electric_car.make) # Output: Tesla my_electric_car.start() # Output: Engine
上記の例では、ElectricCar
クラスはCar
クラスとBattery
クラスを継承しています。ElectricCar
クラスはCar
クラスからmake
、model
、year
属性を継承し、start
メソッドを使用できます。また、ElectricCar
クラスはBattery
クラスからbattery_size
属性を継承し、新しいget_range
メソッドを使用できます。
ElectricCar
クラスは、新しいcharge
メソッドを定義しています。これは、ElectricCar
クラスでのみ使用できるメソッドで、バッテリーを充電するために使用されます。
ElectricCar
クラスのインスタンスを作成し、make
属性とstart
メソッドを使用しています。そして、charge
メソッドを使用してバッテリーを充電し、get_range
メソッドを使用して電気自動車の走行距離を取得しています。
継承によって、ElectricCar
クラスは、Car
クラスとBattery
クラスの機能を継承し、新しい機能を追加することができます。
まとめ
以上のように、Pythonでは継承を使用することで、既存のクラスの機能を再利用したり、新しい機能を追加したりすることができます。継承には単一継承と多重継承があり、必要な機能に応じて選択することができます。クラスの継承はPythonの基本的な文法の用法です。Pythonの基礎学習には下記のようなサイトの利用が有効です。