特殊メソッド

オブジェクト系

メソッド 意味
object.__new__(cls[, ...])
object.__init__(self[, ...])
object.__del__(self)

データ変換系

メソッド 意味
object.__repr__(self)
object.__str__(self)
object.__bytes__(self)
object.__format__(self, format_spec)
object.__bool__(self)

拡張比較 (rich comparison)

メソッド 意味
object.__lt__(self, other) self < other
object.__le__(self, other) self <= other
object.__eq__(self, other) self == other
object.__ne__(self, other) self != other
object.__gt__(self, other) self > other
object.__ge__(self, other) self >= other
object.__hash__(self)
object.__bool__(self)

属性値アクセスの書き換え

メソッド 意味
object.__getattr__(self, name)
object.__getattribute__(self, name)
object.__delattr__(self, name)
object.__dir__(self)

デスクリプタ (descriptor)

メソッド 意味
object.__get__(self, instance, owner)
object.__set__(self, instance, value)
object.__delete__(self, instance)

数値型のエミュレーション

メソッド 意味
object.__add__(self, other) 二項算術演算 +
object.__sub__(self, other) 二項算術演算 -
object.__mul__(self, other) 二項算術演算 *
object.__truediv__(self, other) 二項算術演算 /
object.__floordiv__(self, other) 二項算術演算 //
object.__mod__(self, other) 二項算術演算 %
object.__divmod__(self, other) 二項算術演算 divmod()
object.__pow__(self, other[, modulo]) 二項算術演算 **, pow()
object.__lshift__(self, other) 二項算術演算 <<
object.__rshift__(self, other) 二項算術演算 >>
object.__and__(self, other) 二項算術演算 &
object.__xor__(self, other) 二項算術演算 ^
object.__or__(self, other) 二項算術演算 |
object.__neg__(self) 単項演算 -
object.__pos__(self) 単項演算 +
object.__abs__(self) 単項演算 abs()
object.__invert__(self) 単項演算 ~
object.__complex__(self) 組み込み関数 complex()
object.__int__(self) 組み込み関数 int()
object.__float__(self) 組み込み関数 float()
object.__round__(self[, n]) 組み込み関数 round()

コレクション型のエミュレーション

メソッド 意味
object.__len__(self)
object.__length_hint__(self)
object.__missing__(self, key)
object.__setitem__(self, key, value)
object.__delitem__(self, key)
object.__iter__(self)
object.__reversed__(self)
object.__contains__(self, item)

参考資料