디스크립터 객체¶
“디스크립터”는 객체의 일부 어트리뷰트를 기술하는 객체입니다. 그것들은 형 객체의 딕셔너리에 있습니다.
-
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.
PyMemberDef구조체 member 로부터 확장 타입 type 을 위한 새로운 멤버 디스크립터를 생성합니다.멤버 디스크립터는 타입의 C 구조체에 있는 필드들을 파이썬 어트리뷰트로 노출합니다. 이는
tp_members항목을 위해 생성된 것과 동일한 종류의 디스크립터이며, 파이썬에서는types.MemberDescriptorType객체로 나타납니다.성공하면 디스크립터에 대한 강한 참조 를 반환합니다. 실패 시 예외를 설정하고
NULL을 반환합니다.
-
PyTypeObject PyMemberDescr_Type¶
- …의 일부 안정 ABI.
PyMemberDef구조체로부터 생성된 멤버 디스크립터 객체의 타입입니다. 이 디스크립터들은 C 구조체의 필드들을 타입의 어트리뷰스로 노출하며, 파이썬에서types.MemberDescriptorType객체에 해당합니다.
-
PyTypeObject PyGetSetDescr_Type¶
- …의 일부 안정 ABI.
PyGetSetDef구조체로부터 생성된 get/set 디스크립터 객체의 타입입니다. 이 디스크립터들은 C getter 및 setter 함수에 의해 값이 계산되는 어트리뷰트를 구현하며, 많은 내장 타입 어트리뷰트에 사용됩니다. 이들은 파이썬에서types.GetSetDescriptorType객체에 해당합니다.
-
PyObject *PyDescr_NewMethod(PyTypeObject *type, struct PyMethodDef *meth)¶
- 반환값: 새 참조. …의 일부 안정 ABI.
PyMethodDef구조체 meth 로부터 확장 타입 type 을 위한 새로운 메서드 디스크립터(method descriptor)를 생성합니다.메서드 디스크립터는 C 함수를 타입의 메서드로 노출합니다. 이는
tp_methods항목을 위해 생성된 것과 동일한 종류의 디스크립터이며, 파이썬에서는types.MethodDescriptorType객체로 나타납니다.성공하면 디스크립터에 대한 강한 참조 를 반환합니다. 실패 시 예외를 설정하고
NULL을 반환합니다.
-
PyTypeObject PyMethodDescr_Type¶
- …의 일부 안정 ABI.
PyMethodDef구조체로부터 생성된 메서드 디스크립터 객체의 타입입니다. 이 디스크립터들은 C 함수를 타입의 메서드로 노출하며, 파이썬에서types.MethodDescriptorType객체에 해당합니다.
-
struct wrapperbase¶
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()에 의해 생성된 래퍼 디스크립터 객체의 형(type) 객체입니다. 래퍼 디스크립터는 내부적으로 래퍼 구조를 통해 구현된 특수 메서드를 노출하는 데 사용되며, 파이썬에서는types.WrapperDescriptorType객체로 나타납니다.
-
PyObject *PyDescr_NewClassMethod(PyTypeObject *type, PyMethodDef *method)¶
- 반환값: 새 참조. …의 일부 안정 ABI.
PyMethodDef구조체 method 를 사용하여 확장 타입 type 을 위한 새로운 클래스 메서드 디스크립터를 생성합니다.클래스 메서드 디스크립터는 접근 시 인스턴스가 아닌 클래스를 전달받는 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 로부터 새로운 바운드(bound) 래퍼 객체를 생성합니다.
이는
PyDescr_NewWrapper()에 의해 생성된 래퍼 디스크립터의 바운드 형태입니다. CPython은 인스턴스를 통해 슬롯 래퍼에 접근할 때 이러한 객체를 생성하며, 파이썬에서는types.MethodWrapperType객체로 나타납니다.성공하면 래퍼 객체에 대한 강한 참조\를 반환합니다. 실패 시 예외를 설정하고
NULL\을 반환합니다.
-
PyDescr_COMMON¶
이것은 디스크립터 객체를 위한 공통 필드들을 포함하는 매크로입니다.
이것은 Python의 C API에 실수로 포함된 것이므로 확장 모듈에서 사용하지 마십시오. 커스텀 디스크립터 객체를 생성하려면 디스크립터 프로토콜(
tp_descr_get및tp_descr_set)을 구현하는 클래스를 만드십시오.버전 3.15부터 약하게 폐지 <Soft deprecated>.
내장 디스크립터¶
-
PyTypeObject PyProperty_Type¶
- …의 일부 안정 ABI.
프라퍼티(property) 객체의 형(type) 객체입니다. 파이썬 계층의
property와 동일한 객체입니다.
-
PyTypeObject PySuper_Type¶
- …의 일부 안정 ABI.
슈퍼(super) 객체의 형(type) 객체입니다. 파이썬 계층의
super와 동일한 객체입니다.
-
PyTypeObject PyClassMethod_Type¶
클래스 메서드 객체의 형(type)입니다. 파이썬 계층의
classmethod와 동일한 객체입니다.
-
PyTypeObject PyClassMethodDescr_Type¶
- …의 일부 안정 ABI.
C 수준의 클래스 메서드 디스크립터 객체를 위한 형(type) 객체입니다. 이는 C 확장 타입에서 정의된
classmethod()를 위해 생성된 디스크립터의 형이며, 파이썬의types.ClassMethodDescriptorType객체에 대응합니다.
-
PyObject *PyClassMethod_New(PyObject *callable)¶
callable 을 래핑하는 새로운
classmethod객체를 생성합니다. callable 은 호출 가능한(callable) 객체여야 하며NULL이 아니어야 합니다.성공하면 새 클래스 메서드 디스크립터에 대한 강한 참조 를 반환합니다. 실패하면 예외가 설정된
NULL을 반환합니다.
-
PyTypeObject PyStaticMethod_Type¶
스태틱 메서드(static method) 객체의 형(type)입니다. 파이썬 계층의
staticmethod와 동일한 객체입니다.
-
PyObject *PyStaticMethod_New(PyObject *callable)¶
callable 을 래핑하는 새로운
staticmethod객체를 생성합니다. callable 은 호출 가능한(callable) 객체여야 하며NULL이 아니어야 합니다.성공하면 새 정적 메서드 디스크립터에 대한 강한 참조 를 반환합니다. 실패하면 예외가 설정된
NULL을 반환합니다.