Keep your place in this quest

Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.

Pythonにおけるオブジェクト指向プログラミングの紹介

オブジェクト指向プログラミング(OOP)は、オブジェクトという実世界の概念を表現するプログラミングパラダイムです。オブジェクトとは、特定の特性(データ)と動作(アクション)を持つものを指します。

オブジェクトをプログラム内の自己完結した存在と考えてみましょう。スマートフォンのように、データ(ブランド、モデル、バッテリー残量)を持ち、動作(写真を撮る、電話をかける、音楽を再生する)を実行できます。コード内では、そのデータは属性(例: battery_level)に格納され、動作はメソッド(例: take_photo())として表現されます。これらが一体となって、一つのまとまった単位として作成、設定、利用できます。

クラスは設計図(スマートフォンのデザイン)であり、オブジェクトはその設計図から作られた実際の個々のインスタンス(現在のバッテリー状態や写真を持つあなたのスマートフォン)です。各オブジェクトは独自の状態を持つため、同じクラスから作られた二つのオブジェクトが異なる値を持つことができます。オブジェクト同士はお互いのメソッドを呼び出してやり取りを行い、内部情報を直接操作しないという考え方をカプセル化と呼びます。カプセル化はコードの整理、バグの削減、動作の理解を助けます。

オブジェクト作成時、Pythonは通常、初期状態を設定するために__init__メソッドを実行します。その後はメソッドを呼び出してオブジェクトに動作をさせ、必要に応じて属性を読み書きします。たとえばゲーム開発者なら、healthやposition属性を持ちmove()やjump()ができるPlayerを、ウェブアプリ開発者ならnameやpassword_hash属性を持ちauthenticate()やupdate_profile()を行うUserをイメージしてください。

オブジェクトとは、データと動作が共に存在し、クラスから作られてあなたのために働くものです。

Pythonではすべてがオブジェクトです。つまり、コードはオブジェクトとそのやり取りを中心に書かれています。OOPはPythonの中核であり、DjangoやFlaskなどの人気ライブラリや多くのゲームエンジンの重要機能です。

このレッスンでは、PythonのOOPの基本概念を探り、自分のオブジェクトを作成する方法を学びます。


クラスとオブジェクト

PythonのOOPはクラスオブジェクトを基礎としています:

  • クラスはオブジェクトの種類に対する設計図や定義です。その型のオブジェクトが持つ属性(プロパティ)やメソッド(動作)を説明します。
  • オブジェクトはクラスのインスタンスであり、設計図から作られた実際の具体的なものです。

1.1. クラスの作成

Pythonでクラスを作るには、classキーワードに続けてクラス名とコロンを書きます。

例:

class Person:
    pass

ここではPersonというクラスを作りました。 passはプレースホルダーで、「ここでは何もしない」という意味で後でコードを追加するまでの仮の記述です。

TIP: クラス名は慣習的にPascalCase(各単語の頭文字を大文字)を使います。

属性とメソッド

クラスは以下のものを持つことができます:

  • 属性 — オブジェクトについての情報を保持する変数。
  • メソッド — オブジェクトが実行できる動作を定義する関数。

2.1. 属性の追加

オブジェクトの属性を設定するには、__init__(ダンダーイニットと読みます)という特別なメソッド内で定義します。

__init__はクラスから新しいオブジェクトを作るたびに自動的に呼ばれ、属性を初期値で準備します。

例:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

この例で起きていること:

  • 最初のパラメータselfは作られている特定のオブジェクト自身を指します。
  • それ以外のnameageはオブジェクト作成時に渡す値です。
  • self.nameself.ageはインスタンス属性で、オブジェクト内にデータを保持します。

重要:selfはインスタンスメソッドで常に最初のパラメータでなければならず、そのオブジェクト自身の属性やメソッドにアクセスできます。

2.2. メソッドの追加

メソッドはクラスに属する関数です。 通常はオブジェクトの属性を参照・変更して動作を実行します。

例:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def greet(self):
        print(f"Hello, my name is {self.name} and I am {self.age} years old.")

ここでは:

  • greetというメソッドを追加しました。
  • オブジェクトの属性(self.nameとself.age)を使って個別のメッセージを表示します。

オブジェクトの作成と利用

クラスを定義した後は、関数を呼ぶようにクラス名でオブジェクトを作成できます。

例:

person1 = Person("Alice", 30)
person1.greet()

出力:

Hello, my name is Alice and I am 30 years old.

まとめ

このレッスンで学んだこと:

  • クラスオブジェクトの違い。
  • __init__を使いオブジェクト作成時に属性を設定する方法。
  • オブジェクトに動作をさせるメソッドの定義方法。

これはPythonのOOPの基礎です。 次は継承について学び、既存クラスを基にした新しいクラスの作り方を探ります。