# 抽象オブジェクトレイヤ (Abstract Objects Layer)

この章で説明する関数は、オブジェクトの型に依存しないような Python オブジェクトの操作や、(数値型全て、シーケンス型全てといった) 大まかな型のオブジェクトに対する操作を行ないます。関数を適用対象でないオブジェクトに対して使った場合、Python の例外が送出されることになります。

これらの関数は、 `PyList_New()` で作成された後に `NULL` 以外の値を設定されていないリストのような、適切に初期化されていないオブジェクトに対して使うことはできません。

- オブジェクトプロトコル (object protocol)
- Call プロトコル
  - The tp_call Protocol
  - The Vectorcall Protocol
    - 再帰の管理
    - Vectorcall Support API
  - Object Calling API
  - Call Support API
- 数値型プロトコル (number protocol)
- シーケンス型プロトコル (sequence protocol)
- マップ型プロトコル (mapping protocol)
- イテレータプロトコル (iterator protocol)
- バッファプロトコル (buffer Protocol)
  - buffer 構造体
  - バッファリクエストのタイプ
    - リクエストに依存しないフィールド
    - readonly, format
    - shape, strides, suboffsets
    - 隣接性のリクエスト
    - 複合リクエスト
  - 複雑な配列
    - NumPy スタイル: shape, strides
    - PIL スタイル: shape, strides, suboffsets
  - バッファ関連の関数
- 古いバッファプロトコル