1.3 関数とオブジェクト指向プログラミング

1.3 関数とオブジェクト指向プログラミング #

関数 #

関数は、特定のタスクを実行するためのコードのまとまりです。関数を使用することで、コードの再利用性を向上させ、プログラムの構造を整理できます。Pythonでは、defキーワードを使って関数を定義します。

def greet(name):
    print(f"Hello, {name}!")

greet("Alice")
greet("Bob")

関数は、戻り値を返すことができます。戻り値は、returnキーワードを使って指定します。

def add(a, b):
    return a + b

result = add(5, 3)
print(result)  # 8

関数には、デフォルト引数を設定することができます。デフォルト引数は、関数呼び出し時に値が指定されなかった場合に使用されます。

def power(x, n=2):
    return x ** n

print(power(3))      # 9
print(power(3, 3))   # 27

オブジェクト指向プログラミング #

オブジェクト指向プログラミング(OOP)は、プログラムをオブジェクト(データとそのデータに関連する操作をまとめたもの)という単位で設計・実装するアプローチです。Pythonはオブジェクト指向言語であり、クラスとインスタンスを使ってオブジェクト指向プログラミングをサポートしています。

クラスは、オブジェクトの設計図のようなもので、属性(データ)とメソッド(操作)を定義します。

class Car:
    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year

    def describe(self):
        return f"{self.year} {self.make} {self.model}"

__init__メソッドは、クラスのインスタンスが作成される際に実行される特殊なメソッドです。このメソッドは、インスタンスの初期化に使用されます。

インスタンスは、クラスをもとに作成されたオブジェクトです。インスタンスを作成するには、クラス名を関数のように呼び出します。

my_car = Car("Toyota", "Corolla", 2021)

インスタンスの属性やメソッドにアクセスするには、ドット(.)を使って指定します。

print(my_car.make)          # Toyota
print(my_car.describe())    # 2021

オブジェクト指向プログラミングの利点には、以下のようなものがあります。

  • カプセル化: オブジェクトの内部データと振る舞いを隠蔽し、外部から直接アクセスできないようにすることで、プログラムの安全性と信頼性を向上させます
  • 継承: 既存のクラスを拡張して新しいクラスを作成することができます。これにより、コードの再利用性が向上し、新機能の追加や修正が容易になります。
class ElectricCar(Car):
    def __init__(self, make, model, year, battery_size):
        super().__init__(make, model, year)
        self.battery_size = battery_size

    def describe_battery(self):
        return f"バッテリー容量: {self.battery_size} kWh"

my_electric_car = ElectricCar("Tesla", "Model 3", 2021, 75)
print(my_electric_car.describe())          # 2021 Tesla Model 3
print(my_electric_car.describe_battery())  # バッテリー容量: 75 kWh
  • 多態性: 異なるクラスのオブジェクトが同じインターフェースを共有することができます。これにより、プログラムの柔軟性が向上し、新しいオブジェクト型を追加する際の変更が最小限になります。
def display_car_info(car):
    print(car.describe())

display_car_info(my_car)          # 2021 Toyota Corolla
display_car_info(my_electric_car) # 2021 Tesla Model 3

関数とオブジェクト指向プログラミングは、プログラムの構造と再利用性を向上させるために重要な概念です。関数を使ってコードのまとまりを作成し、クラスとインスタンスを使ってオブジェクト指向プログラミングを実践することで、効率的で保守性の高いプログラムを構築できます。