クラス
状態(インスタンスごとのインスタンス変数)を持ち、インスタンスを生成できる。
モジュール
インスタンスを生成できないが、モジュール自身の状態(インスタンス変数)を持つことはできる。
トップレベル関数
クラスやモジュールに属さない関数で、グローバルな名前空間で定義される。
選択の流れ:
- インスタンス、または状態(インスタンスごとのデータ)を持つ必要があるか?
- はい → クラスを使用
- いいえ → 次へ
- 以下の条件のいずれかに当てはまるか?
- はい → モジュールを使用
- いいえ → トップレベル関数を使用
- 条件:
- 名前空間を提供したい(衝突を避けたい)
- 再利用性が必要
- 拡張性が必要
- テストが容易であることが望ましい
- モジュール自身の状態を持ちたい