# 實例方法物件 (Instance Method Objects)

實例方法是 `PyCFunction` 的包裝器 (wrapper)，也是將 `PyCFunction` 繫結 (bind) 到類別物件的一種新方式。它替代了原先對 `PyMethod_New(func, NULL, class)` 的呼叫。

PyTypeObject `PyInstanceMethod_Type`

  `PyTypeObject` 的實例代表 Python 實例方法型別。它不會公開 (expose) 給 Python 程式。

int `PyInstanceMethod_Check`(PyObject *o)

  如果 o 是一個實例方法物件（型別為 `PyInstanceMethod_Type`）則回傳 true。參數必須不為 `NULL`。此函式總是會成功執行。

PyObject *`PyInstanceMethod_New`(PyObject *func)
  返回值：新的引用。

  回傳一個新的實例方法物件，func 為任意可呼叫物件，在實例方法被呼叫時 func 函式也會被呼叫。

PyObject *`PyInstanceMethod_Function`(PyObject *im)
  返回值：借入的引用。

  回傳關聯到實例方法 im 的函式物件。

PyObject *`PyInstanceMethod_GET_FUNCTION`(PyObject *im)
  返回值：借入的引用。

  巨集 (macro) 版本的 `PyInstanceMethod_Function()`，忽略了錯誤檢查。

# 方法物件 (Method Objects)

方法為繫結函式 (bound function) 物件。方法總是會被繫結到一個使用者定義類別的實例。未繫結方法（繫結到一個類別的方法）已不可用。

PyTypeObject `PyMethod_Type`

  這個 `PyTypeObject` 實例代表 Python 方法型別。它作為 `types.MethodType` 公開給 Python 程式。

int `PyMethod_Check`(PyObject *o)

  如果 o 是一個方法物件（型別為 `PyMethod_Type`）則回傳 true。參數必須不為 `NULL`。此函式總是會成功執行。

PyObject *`PyMethod_New`(PyObject *func, PyObject *self)
  返回值：新的引用。

  回傳一個新的方法物件，func 應為任意可呼叫物件，self 為該方法應繫結的實例。在方法被呼叫時，func 函式也會被呼叫。self 必須不為 `NULL`。

PyObject *`PyMethod_Function`(PyObject *meth)
  返回值：借入的引用。

  回傳關聯到方法 meth 的函式物件。

PyObject *`PyMethod_GET_FUNCTION`(PyObject *meth)
  返回值：借入的引用。

  巨集版本的 `PyMethod_Function()`，忽略了錯誤檢查。

PyObject *`PyMethod_Self`(PyObject *meth)
  返回值：借入的引用。

  回傳關聯到方法 meth 的實例。

PyObject *`PyMethod_GET_SELF`(PyObject *meth)
  返回值：借入的引用。

  巨集版本的 `PyMethod_Self()`，忽略了錯誤檢查。