Python OOP基礎:クラス、オブジェクト、継承、コンストラクタを解説
Pythonオブジェクト指向プログラミング (OOP)
PythonのOOPモデルでは、開発者が現実世界のエンティティをクラスで定義されるオブジェクトとしてモデル化できます。言語はコード再利用とモジュール性を優先し、クラスの作成と拡張を容易にします。
クラスとは
クラスは、データ(属性)と振る舞い(メソッド)を束ねる論理的なコンテナです。共通のプロパティを共有するオブジェクトのテンプレートを定義します。
例: Customerクラスは、transactions、balance、debtなどの属性と、deposit()やwithdraw()などのメソッドを公開できます。
Pythonでのクラス定義
シンプルなクラスを作成する手順:
classキーワードを使用:class MyClass: pass- クラス内にメソッドを定義。インスタンスメソッドの最初のパラメータは
selfで、オブジェクト自身を参照します。class MyClass: def greet(self): print("Hello from MyClass") - クラスをインスタンス化:
obj = MyClass()
- メソッドを呼び出し:
obj.greet()
完全な例:
# Pythonクラスの動作例
class MyClass:
def method1(self):
print("Guru99")
def method2(self, text):
print("Software Testing: " + text)
def main():
c = MyClass()
c.method1()
c.method2(" Testing is fun")
if __name__ == "__main__":
main()
Pythonでの継承
継承により派生クラスが基底クラスの振る舞いを再利用・拡張できます。Pythonは単一継承と多重継承の両方をサポートします。
class Base:
def greet(self):
print("Hello from Base")
class Derived(Base):
def greet(self):
super().greet()
print("Hello from Derived")
# 使用例
obj = Derived()
obj.greet()
重要なポイント:
- 派生クラスは属性とメソッドを自動的に継承
- 同じ名前のメソッドをサブクラスで定義してオーバーライド
- 親メソッドを
ParentClass.method(self, …)またはsuper().method()で明示的に呼び出し
コンストラクタ: __init__
__init__メソッドは、新しいオブジェクトを事前定義値で初期化します。
class User:
def __init__(self, name):
self.name = name
def say_hello(self):
print(f"Welcome to Guru99, {self.name}")
user = User("Alex")
user.say_hello()
出力: Welcome to Guru99, Alex
Python 2 vs Python 3
マイナーな構文違いのみ。上記例はprint文を適切に調整すれば両バージョンで動作します。
重要なポイント
- クラスは
classキーワードでデータと振る舞いを束ねる - インスタンスメソッドは
selfでオブジェクト自身を参照 - 継承はコード再利用を促進し、単一/多重継承が可能
- コンストラクタ(
__init__)で新オブジェクトの初期状態を設定 - Pythonの柔軟な構文と
selfのランタイム処理でOOPが直感的
Python
- Raspberry Pi と Python でロボットを構築:完全ガイド
- C# クラスとオブジェクト:堅牢な OOP の基礎
- C++ structとclassの違い:構文、特徴、使い分けのベストプラクティス
- Pythonオブジェクト指向プログラミング完全ガイド:クラス、継承、カプセル化、ポリモーフィズム
- Python継承マスター:概念、構文、実践例
- Python strip()メソッド完全ガイド:実践例付き
- Python collections.Counter:効率的なカウント、更新、演算操作
- Python type()とisinstance()の理解:実例付き解説
- Python list.index():要素の位置を検索する実践ガイド
- Pythonオブジェクト指向プログラミング完全ガイド:クラスと継承をマスター
- Javaオブジェクトとクラス:コアOOP概念を完全理解