디스크립터 객체¶
“디스크립터”는 객체의 일부 어트리뷰트를 기술하는 객체입니다. 그것들은 형 객체의 딕셔너리에 있습니다.
-
PyObject *PyDescr_NewGetSet(PyTypeObject *type, struct PyGetSetDef *getset)¶
- 반환값: 새 참조. 상의 안정 ABI.
PyGetSetDef구조체 getset 으로부터 확장 유형 type 에 대한 새로운 get-set 데스크립터를 만듭니다.Get-set 디스크립터는 인스턴스에 직접 저장되는 것이 아니라 C getter 및 setter 함수에 의해 구현된 속성을 노출합니다. 이는
tp_getset에 있는 항목에 대해 생성된 것과 동일한 유형의 디스크립터이며, 파이썬에서는types.GetSetDescriptorType객체로 나타납니다.성공하면 디스크립터에 대한 강한 참조\를 반환합니다. 실패 시 예외를 설정하고
NULL\을 반환합니다.
-
PyObject *PyDescr_NewMember(PyTypeObject *type, struct PyMemberDef *member)¶
- 반환값: 새 참조. 상의 안정 ABI.
확장 타입 type 을 위한 새 멤버 디스크립터를
PyMemberDef구조체 member 로부터 생성합니다.멤버 디스크립터는 타입의 C 구조체 필드를 파이썬 속성으로 노출합니다. 이는
tp_members의 항목에 대해 생성된 것과 같은 종류의 디스크립터이며, 파이썬에서는types.MemberDescriptorType객체로 나타납니다.성공하면 디스크립터에 대한 강한 참조\를 반환합니다. 실패 시 예외를 설정하고
NULL\을 반환합니다.
-
PyTypeObject PyMemberDescr_Type¶
- 상의 안정 ABI.
PyMemberDef구조체로부터 생성된 멤버 디스크립터 객체에 대한 타입 객체입니다. 이 디스크립터는 C 구조체의 필드를 타입의 속성으로 노출하며, 파이썬의types.MemberDescriptorType객체에 해당합니다.
-
PyTypeObject PyGetSetDescr_Type¶
- 상의 안정 ABI.
PyGetSetDef구조체로부터 생성된 get/set 디스크립터 객체에 대한 타입 객체입니다. 이 디스크립터는 C 게터 및 세터 함수에 의해 값이 계산되는 속성을 구현하며, 많은 내장 타입 속성에 사용됩니다. 파이썬의types.GetSetDescriptorType객체와 해당합니다.
-
PyObject *PyDescr_NewMethod(PyTypeObject *type, struct PyMethodDef *meth)¶
- 반환값: 새 참조. 상의 안정 ABI.
확장 타입 type 을 위한 새 메서드 디스크립터를
PyMethodDef구조체 meth 로부터 생성합니다.메서드 디스크립터는 C 함수를 타입의 메서드로 노출합니다. 이는
tp_methods의 항목에 대해 생성된 것과 같은 종류의 디스크립터이며, 파이썬에서는types.MethodDescriptorType객체로 나타납니다.성공하면 디스크립터에 대한 강한 참조\를 반환합니다. 실패 시 예외를 설정하고
NULL\을 반환합니다.
-
PyTypeObject PyMethodDescr_Type¶
- 상의 안정 ABI.
PyMethodDef구조체로부터 생성된 메서드 디스크립터 객체에 대한 타입 객체입니다. 이 디스크립터는 C 함수를 타입의 메서드로 노출하며, 파이썬의types.MethodDescriptorType객체에 해당합니다.
-
struct wrapperbase¶
:c:func:`PyDescr_NewWrapper`가 사용하는 슬롯 래퍼를 설명합니다.
각
wrapperbase레코드는 타입 슬롯에 구현된 특수 메서드의 파이썬에서 보이는 이름과 메타데이터를 저장하며, 해당 슬롯을 파이썬 호출 규약에 맞게 조정하는 래퍼 함수를 함께 저장합니다.
-
PyObject *PyDescr_NewWrapper(PyTypeObject *type, struct wrapperbase *base, void *wrapped)¶
- 반환값: 새 참조.
wrapperbase구조체 base 와 감싸는 슬롯 함수 포인터 wrapped 로부터 확장 타입 type 을 위한 새로운 래퍼 디스크립터를 생성합니다.래퍼 디스크립터는 타입 슬롯에 구현된 특수 메서드를 노출합니다. 이는 CPython이
__repr__나__add__와 같은 슬롯 기반 특수 메서드에 대해 생성하는 것과 같은 종류의 디스크립터이며, 파이썬에서는types.WrapperDescriptorType객체로 나타납니다.성공하면 디스크립터에 대한 강한 참조\를 반환합니다. 실패 시 예외를 설정하고
NULL\을 반환합니다.
-
PyTypeObject PyWrapperDescr_Type¶
- 상의 안정 ABI.
PyDescr_NewWrapper()및PyWrapper_New()에 의해 생성된 래퍼 디스크립터 객체에 대한 타입 객체입니다. 래퍼 디스크립터는 래퍼 구조체를 통해 구현된 특수 메서드를 노출하는 데 내부적으로 사용되며, 파이썬에서는types.WrapperDescriptorType객체로 나타납니다.
-
PyObject *PyDescr_NewClassMethod(PyTypeObject *type, PyMethodDef *method)¶
- 반환값: 새 참조. 상의 안정 ABI.
확장 타입 type 을 위한 새 클래스 메서드 디스크립터를
PyMethodDef구조체 method 로부터 생성합니다.클래스 메서드 디스크립터는 접근 시 인스턴스가 아닌 클래스를 받는 C 메서드를 노출합니다. 이는
tp_methods의METH_CLASS항목에 대해 생성된 것과 같은 종류의 디스크립터이며, 파이썬에서는types.ClassMethodDescriptorType객체로 나타납니다.성공하면 디스크립터에 대한 강한 참조\를 반환합니다. 실패 시 예외를 설정하고
NULL\을 반환합니다.
-
int PyDescr_IsData(PyObject *descr)¶
디스크립터 객체 descr*가 데이터 속성을 기술하면 0이 아닌 값을 반환하고, 메서드를 기술하면 ``0``\을 반환합니다. *descr\는 디스크립터 객체여야 합니다; 오류 검사는 없습니다.
-
PyObject *PyWrapper_New(PyObject *d, PyObject *self)¶
- 반환값: 새 참조. 상의 안정 ABI.
래퍼 디스크립터 d 와 인스턴스 self 로부터 새 바운드 래퍼 객체를 생성합니다.
PyDescr_NewWrapper()에 의해 생성된 래퍼 디스크립터의 바운드 형태입니다. CPython은 슬롯 래퍼가 인스턴스를 통해 접근될 때 이 객체들을 생성하며, 파이썬에서는types.MethodWrapperType객체로 나타납니다.성공하면 래퍼 객체에 대한 강한 참조\를 반환합니다. 실패 시 예외를 설정하고
NULL\을 반환합니다.
-
PyDescr_COMMON¶
디스크립터 객체의 공통 필드를 포함하는 매크로입니다.
이것은 파이썬의 C API에서 실수로 포함된 것입니다. 확장 모듈에서는 사용하지 마십시오. 사용자 정의 디스크립터 객체를 생성하려면 디스크립터 프로토콜을 구현하는 클래스를 생성하십시오 (
tp_descr_get및tp_descr_set).버전 3.15부터 약하게 폐지 <Soft deprecated>.
내장 디스크립터¶
-
PyTypeObject PyProperty_Type¶
- 상의 안정 ABI.
속성 객체에 대한 타입 객체입니다. 이는 파이썬 계층의 :class:`property`와 같은 객체입니다.
-
PyTypeObject PySuper_Type¶
- 상의 안정 ABI.
슈퍼 객체의 타입 객체입니다. 이것은 파이썬 계층의 :class:`super`와 같은 객체입니다.
-
PyTypeObject PyClassMethod_Type¶
클래스 메서드 객체의 타입입니다. 이것은 파이썬 계층의 :class:`classmethod`와 같은 객체입니다.
-
PyTypeObject PyClassMethodDescr_Type¶
- 상의 안정 ABI.
C 레벨 클래스 메서드 디스크립터 객체의 타입 객체입니다. 이것은 C 확장 타입에서 정의된
classmethod`에 대해 생성된 디스크립터의 타입이며, 파이썬의 :class:`types.ClassMethodDescriptorType()객체에 해당합니다.
-
PyObject *PyClassMethod_New(PyObject *callable)¶
callable 을 래핑하는 새
classmethod객체를 생성합니다. callable 은 콜러블 객체여야 하며,NULL가 아니어야 합니다.성공하면 새 클래스 메서드 디스크립터에 대한 강한 참조 를 반환합니다. 실패하면 예외가 설정된
NULL을 반환합니다.
-
PyTypeObject PyStaticMethod_Type¶
정적 메서드 객체의 타입입니다. 이것은 파이썬 계층의 :class:`staticmethod`와 같은 객체입니다.
-
PyObject *PyStaticMethod_New(PyObject *callable)¶
callable 을 래핑하는 새
staticmethod객체를 생성합니다. callable 은 콜러블 객체여야 하며,NULL가 아니어야 합니다.성공하면 새 정적 메서드 디스크립터에 대한 강한 참조 를 반환합니다. 실패하면 예외가 설정된
NULL을 반환합니다.