Pythonの基本オーバーロードメソッド(特殊メソッド)一覧と使い方
Pythonの基本オーバーロードメソッドとは
Pythonでは、クラス内に特定の名前を持つメソッドを定義(オーバーライド)することで、オブジェクトの生成・破棄、文字列への変換、オブジェクト同士の比較など、汎用的な動作を自由にカスタマイズできます。
こうしたメソッドは「特殊メソッド」あるいは「マジックメソッド」と呼ばれ、名前が二重のアンダースコア(__)で囲まれているのが特徴です。以下の表に、独自のクラスでオーバーライドできる代表的な汎用メソッドをまとめました。
オーバーライド可能な主な特殊メソッド一覧
| 番号 | メソッド・説明・呼び出し例 |
|---|---|
| 1 | __init__ ( self [,args...] ) コンストラクタ。オブジェクト生成時に任意の引数を受け取り、初期化処理を行います。 呼び出し例: obj = className(args) |
| 2 | __del__ ( self ) デストラクタ。オブジェクトが破棄される際に呼び出され、後処理を行います。 呼び出し例: del obj |
| 3 | __repr__ ( self ) 評価可能な(evalで再現できるような)公式の文字列表現を返します。デバッグ時に有用です。 呼び出し例: repr(obj) |
| 4 | __str__ ( self ) print関数などで表示される、人間が読みやすい文字列表現を返します。 呼び出し例: str(obj) |
| 5 | __cmp__ ( self, x ) オブジェクト同士を比較します(Python 2系のメソッド)。 呼び出し例: cmp(obj, x) |
補足ポイント
__repr__ と __str__ の違い: __repr__ は開発者向けの正確な表現、__str__ はユーザー向けの分かりやすい表現を意図しています。両方が定義されている場合、print() や str() では __str__ が優先され、対話シェルなどでは __repr__ が使われます。
__cmp__ に関する注意: __cmp__ はPython 2系までのメソッドで、Python 3では削除されています。Python 3では代わりに __eq__、__lt__、__gt__ などのリッチ比較メソッドを使用します。
-
Pythonの演算子オーバーロードとは?マジックメソッドの仕組みを解説
Pythonでは、組み込みクラスかユーザー定義クラスかにかかわらず、すべてのクラスはobjectクラスを継承しています。このobjectクラスには、名前の前後に二重アンダースコア(__)が付けられた多数の特殊な属性が定義されています。 これらの属性は、それぞれ同じ名前を持つメソッドをラップする構造になっており、このようなメソッドは「特殊メソッド(special methods)」または「マジックメソッド(magic methods)」と呼ばれます。 マジックメソッドと演算子の対応関係 クラス内でマジックメソッドをオーバーライドすることで、対応する演算子の挙動を自由にカスタマイズできます。主な対
-
Pythonの基本オーバーロードメソッドとは?仕組みと使い方を実例で解説
Pythonのクラスが持つオブジェクト指向の標準機能Pythonのクラスは、オブジェクト指向プログラミング(OOP)パラダイムに必要な標準的な機能をすべて備えています。その中核となるのがクラス継承の仕組みで、Pythonでは複数の基底クラス(親クラス)から同時に継承できる「多重継承」がサポートされています。さらに、派生クラス(子クラス)は基底クラスの任意のメソッドを自由に上書き(オーバーライド)できます。また、オーバーライドしたメソッドの中から、super()を使って同じ名前の基底クラスのメソッドを呼び出すことも可能です。メソッドオーバーライドの基本例以下は、基底クラスのメソッドを派生クラスで