クラスの基礎
クラスの基礎
🎯 このlessonを読み終えたら
このlessonを読み終えると、以下の3つを自信を持って行えるようになります。
- ▸✅
__init__·self· インスタンスメソッドの基本 - ▸✅ クラス変数とインスタンス変数の違い
- ▸✅ マジックメソッド:
__repr__·__str__·__eq__
学習目標をチェックリストとして持ち、すべてに答えられるようになったらlessonを閉じてください。
クラスの6つのコア概念 — コード + 実行結果
class = データ + 振る舞いをまとめた設計図。同じ形のオブジェクトを複数作りたいときに使います。
1. 最もシンプルなクラス
Person() を呼び出すとオブジェクトが生成されます。変数はそのオブジェクトを指します。
2. __init__ — コンストラクタ
self とは? = 「このメソッドを呼び出したオブジェクト自身」(Javaの this に相当)。すべてのメソッドの第1引数として必須です。
3. メソッド — オブジェクトの振る舞い
メソッドを呼ぶ際は c.deposit(500) のように オブジェクト.メソッド(引数) と記述します — self は自動で渡されます。
4. __str__ — 出力フォーマット
__str__ がなければ <__main__.Person object at 0x...> のような意味のない出力になります。必ず定義することを推奨します。
5. クラス変数 vs インスタンス変数
6. Javaとの比較 — より短い
一言まとめ
ポイント:同じ形のオブジェクトを複数作るときに使います。self がまさにそのオブジェクトそのものです。
💡 重要ポイント
1. self はインスタンス自身を参照します
2. __init__ はコンストラクタ(自動呼び出し)
3. クラス変数とインスタンス変数を区別する
PythonのOOPはクラス(class)でオブジェクトを定義します。__init__ はコンストラクタ、self はインスタンス参照です。継承は class Child(Parent): で実装し、super() で親メソッドを呼び出します。@property でgetter/setterを実装し、@classmethod/@staticmethod でクラス/静的メソッドを定義します。多重継承とMRO(Method Resolution Order)もサポートされています。
🐍 実際に動かしてみよう — クラスの基礎
🤖 AIへのリクエスト例
このlessonの概念を知っていれば、AIに具体的に指示することができます。漠然とした「直して」ではなく、語彙を持ったリクエスト — それがトークン節約の出発点です。
- ▸「このPythonコードにクラスの基礎概念を適用して」
- ▸「このコードにtype hint + pytestの単体テストを追加して」
- ▸「クラスの基礎に関するPEP 8違反を確認して」
なぜこれがトークンを減らすのか
概念を知らないとAIの回答を受けても 「それは何ですか?」 と再度聞き直す必要があります。その「聞き直し」がトークンを消費します。概念を一度学んでおけば、会話が一度で完結します。