##
7.5.3 Method Objects

There are some useful functions that are useful for working with method objects.

PyTypeObject `PyMethod_Type`
  This instance of `PyTypeObject` represents the Python method type. This is exposed to Python programs as `types.MethodType`.

int `PyMethod_Check`(PyObject *o)
  Return true if o is a method object (has type `PyMethod_Type`). The parameter must not be `NULL`.

PyObject* `PyMethod_New`(PyObject *func. PyObject *self, PyObject *class)
  Return value: New reference.
  Return a new method object, with func being any callable object; this is the function that will be called when the method is called. If this method should be bound to an instance, self should be the instance and class should be the class of self, otherwise self should be `NULL` and class should be the class which provides the unbound method..

PyObject* `PyMethod_Class`(PyObject *meth)
  Return value: Borrowed reference.
  Return the class object from which the method meth was created; if this was created from an instance, it will be the class of the instance.

PyObject* `PyMethod_GET_CLASS`(PyObject *meth)
  Return value: Borrowed reference.
  Macro version of `PyMethod_Class()` which avoids error checking.

PyObject* `PyMethod_Function`(PyObject *meth)
  Return value: Borrowed reference.
  Return the function object associated with the method meth.

PyObject* `PyMethod_GET_FUNCTION`(PyObject *meth)
  Return value: Borrowed reference.
  Macro version of `PyMethod_Function()` which avoids error checking.

PyObject* `PyMethod_Self`(PyObject *meth)
  Return value: Borrowed reference.
  Return the instance associated with the method meth if it is bound, otherwise return `NULL`.

PyObject* `PyMethod_GET_SELF`(PyObject *meth)
  Return value: Borrowed reference.
  Macro version of `PyMethod_Self()` which avoids error checking.