# 实例方法对象

实例方法是 `PyCFunction` 的包装器，也是将 `PyCFunction` 绑定到类对象的一种新方式。 它替代了原先的调用 `PyMethod_New(func, NULL, class)`。

PyTypeObject `PyInstanceMethod_Type`

  这个 `PyTypeObject` 实例代表 Python 实例方法类型。 它并不对 Python 程序公开。

int `PyInstanceMethod_Check`(PyObject *o)

  如果 o 是一个实例方法对象 (类型为 `PyInstanceMethod_Type`) 则返回真值。 形参必须不为 `NULL`。 此函数总是会成功执行。

PyObject* `PyInstanceMethod_New`(PyObject *func)
  Return value: New reference.

  Return a new instance method object, with func being any callable object. func is the function that will be called when the instance method is called.

PyObject* `PyInstanceMethod_Function`(PyObject *im)
  Return value: Borrowed reference.

  返回关联到实例方法 im 的函数对象。

PyObject* `PyInstanceMethod_GET_FUNCTION`(PyObject *im)
  Return value: Borrowed reference.

  宏版本的 `PyInstanceMethod_Function()`，略去了错误检测。

# 方法对象

方法是绑定的函数对象。 方法总是会被绑定到一个用户自定义类的实例。 未绑定方法（绑定到一个类的方法）已不再可用。

PyTypeObject `PyMethod_Type`

  这个 `PyTypeObject` 实例代表 Python 方法类型。 它作为 `types.MethodType` 向 Python 程序公开。

int `PyMethod_Check`(PyObject *o)

  如果 o 是一个方法对象 (类型为 `PyMethod_Type`) 则返回真值。 形参必须不为 `NULL`。 此函数总是会成功执行。

PyObject* `PyMethod_New`(PyObject *func, PyObject *self)
  Return value: New reference.

  返回一个新的方法对象，func 应为任意可调用对象，self 为该方法应绑定的实例。 在方法被调用时 func 将作为函数被调用。 self 必须不为 `NULL`。

PyObject* `PyMethod_Function`(PyObject *meth)
  Return value: Borrowed reference.

  返回关联到方法 meth 的函数对象。

PyObject* `PyMethod_GET_FUNCTION`(PyObject *meth)
  Return value: Borrowed reference.

  宏版本的 `PyMethod_Function()`，略去了错误检测。

PyObject* `PyMethod_Self`(PyObject *meth)
  Return value: Borrowed reference.

  返回关联到方法 meth 的实例。

PyObject* `PyMethod_GET_SELF`(PyObject *meth)
  Return value: Borrowed reference.

  宏版本的 `PyMethod_Self()`，略去了错误检测。