Python クラスとオブジェクト指向プログラミング

Python のクラス、オブジェクト、継承、OOP の概念についての完全な入門書。堅牢なデータ モデルを作成し、Python アプリケーションを拡張します。

エディターで試してみる

概要

オブジェクト指向プログラミング (OOP) は、大規模で複雑なアプリケーションを構築するために Python で多用される強力なプログラミング パラダイムです。逐次関数の作成に重点を置く手続き型プログラミングとは異なり、OOP は「オブジェクト」の概念を中心に展開します。オブジェクトは、データ (属性と呼ばれる) と動作 (メソッドと呼ばれる) の両方をまとめた自己完結型のユニットです。

Python の「クラス」は、オブジェクトを作成するための設計図またはテンプレートとして機能します。クラスは家の建築設計図のようなものだと考えてください。設計図自体は家ではありませんが、家の外観とその機能を定義します。クラスをインスタンス化すると、そのブループリントから構築された有形の「オブジェクト」または「インスタンス」が作成されます。単一のクラスから数百の一意のインスタンスを作成できます。

Python クラスの中心となるのは、コンストラクターと呼ばれることが多い `__init__()` メソッドです。この特別なメソッドは、クラスから新しいオブジェクトが作成された瞬間に自動的に実行されます。これは、オブジェクトのデフォルト状態を初期化し、オブジェクトに特定の属性を付加する役割を果たします。 「self」パラメータはインスタンス メソッドに強制的に渡され、操作される特定のオブジェクトへの参照として機能します。

OOP の最も強力な柱の 1 つは継承です。継承を使用すると、既存のクラス (親クラス) のすべての属性とメソッドを継承する新しいクラス (子クラス) を作成できます。これにより、大規模なコードの再利用が促進されます。たとえば、汎用の `Vehicle` クラスがあり、その後、`Vehicle` を継承しながら独自の特定の動作を追加する `Car` および `Truck` の子クラスを作成することができます。

もう 1 つの中心的な概念はカプセル化です。これは、オブジェクトの内部状態を隠し、すべての対話が指定されたメソッドを通じて発生することを要求するという概念です。 Python には「private」や「​​protected」のような厳密なアクセス修飾子はありませんが、属性をクラスの外部から直接操作してはならないことを示す命名規則 (変数の前にアンダースコア「_」を付けるなど) に依存しています。

コードと実行の出力

Car オブジェクト インスタンスの厳密な表現を定義し、クラス メソッドを利用してローカル インスタンス データを変更します。

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

    def start(self):
        self.is_running = True
        return f"{self.make} {self.model} has started."

my_car = Car("Toyota", "Corolla")
print(my_car.make)
print(my_car.start())
端子出力
Toyota
Toyota Corolla has started.

段階的な実装

  • 現実世界のエンティティ (ユーザー、製品、カート) のモデリング
  • ゲーム エンジンとエンティティ コンポーネント システムの構築
  • 再利用可能なグラフィカル ユーザー インターフェイス コンポーネントの作成

よくある質問

「自分」とはどういう意味ですか?

「self」はクラスのインスタンスを表します。 「self」キーワードを使用すると、Python のクラスの属性とメソッドにアクセスできます。

Python は多重継承をサポートしていますか?

はい、Python ではクラスが複数の親クラスから継承することができます。

関連トピック

推奨される Python リソース

関連するインタラクティブなチュートリアル、チートシート、コード比較で知識を深めてください。