# Objetos descritores

“Descritores” são objetos que descrevem algum atributo de um objeto. Eles são encontrados no dicionário de objetos de tipo.

PyTypeObject PyProperty_Type
  Parte da ABI Estável.

  O tipo de objeto para os tipos de descritores embutidos.

PyObject *PyDescr_NewGetSet( PyTypeObject *type, struct PyGetSetDef *getset)
  Retorna valor: Nova referência. Parte da ABI Estável.

PyObject *PyDescr_NewMember( PyTypeObject *type, struct PyMemberDef *meth)
  Retorna valor: Nova referência. Parte da ABI Estável.

PyTypeObject PyMemberDescr_Type
  Parte da ABI Estável.

  O objeto de tipo para descritores de membros criados a partir de estruturas `PyMemberDef`. Esses descritores expõem campos de uma estrutura C como atributos de um tipo e correspondem a objetos `types.MemberDescriptorType` em Python.

PyTypeObject PyGetSetDescr_Type
  Parte da ABI Estável.

  O objeto de tipo para descritores get/set criados a partir de estruturas `PyGetSetDef`. Esses descritores implementam atributos cujo valor é calculado por funções getter e setter em C e são usados para muitos atributos de tipo embutidos.

PyObject *PyDescr_NewMethod( PyTypeObject *type, struct PyMethodDef *meth)
  Retorna valor: Nova referência. Parte da ABI Estável.

PyTypeObject PyMethodDescr_Type
  Parte da ABI Estável.

  O objeto de tipo para descritores de métodos criados a partir de estruturas `PyMethodDef`. Esses descritores expõem funções C como métodos de um tipo e correspondem a objetos `types.MemberDescriptorType` em Python.

PyObject *PyDescr_NewWrapper( PyTypeObject *type, struct wrapperbase *wrapper, void *wrapped)
  Retorna valor: Nova referência.

PyTypeObject PyWrapperDescr_Type
  Parte da ABI Estável.

  O objeto de tipo para objetos descritores de encapsulamento criados por `PyDescr_NewWrapper()` e `PyWrapper_New()`. Os descritores de encapsulamento são usados internamente para expor métodos especiais implementados por meio de estruturas de encapsulamento e aparecem em Python como objetos `types.WrapperDescriptorType`.

PyObject *PyDescr_NewClassMethod( PyTypeObject *type, PyMethodDef *method)
  Retorna valor: Nova referência. Parte da ABI Estável.

int PyDescr_IsData( PyObject *descr)

  Retorna não-zero se o objeto descritor descr descrevem um atributo de dados, ou `0` se os mesmos descrevem um método. descr deve ser um objeto descritor; não há verificação de erros.

PyObject *PyWrapper_New( PyObject *, PyObject *)
  Retorna valor: Nova referência. Parte da ABI Estável.

## Descritores embutidos

PyTypeObject PySuper_Type
  Parte da ABI Estável.

  O objeto de tipo para superobjetos. Este é o mesmo objeto que `super` na camada Python.

PyTypeObject PyClassMethod_Type

  O tipo de objeto de método de classe. Este é o mesmo objeto que `classmethod` na camada Python.

PyTypeObject PyClassMethodDescr_Type
  Parte da ABI Estável.

  O objeto de tipo para descritores de métodos de classe em nível C. Este é o tipo dos descritores criados para `classmethod()` definidos em tipos de extensão C, e é o mesmo objeto que `classmethod` em Python.

PyObject *PyClassMethod_New( PyObject *callable)

  Cria um novo objeto `classmethod` que envolve callable. callable deve ser um objeto chamável e não deve ser `NULL`.

  Em caso de sucesso, esta função retorna uma referência forte a um novo descritor de método de classe. Em caso de falha, esta função retorna `NULL` com uma exceção definida.

PyTypeObject PyStaticMethod_Type

  O tipo de objeto de método estático. Este é o mesmo objeto que `staticmethod` na camada Python.

PyObject *PyStaticMethod_New( PyObject *callable)

  Cria um novo objeto `staticmethod` que envolve callable. callable deve ser um objeto chamável e não deve ser `NULL`.

  Em caso de sucesso, esta função retorna uma referência forte a um novo descritor de método estático. Em caso de falha, esta função retorna `NULL` com uma exceção definida.