디스크립터 객체¶
“디스크립터”는 객체의 일부 어트리뷰트를 기술하는 객체입니다. 그것들은 형 객체의 딕셔너리에 있습니다.
-
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객체에 해당합니다.
-
PyTypeObject PyWrapperDescr_Type¶
- …의 일부 안정 ABI.
PyDescr_NewWrapper()및PyWrapper_New()에 의해 생성된 래퍼 디스크립터 객체의 타입 객체입니다.래퍼 디스크립터는 타입 슬롯에 의해 구현되는
__repr__또는__add__와 같은 특별한 메서드를 노출하는 데 내부적으로 사용됩니다. 이 타입은 파이썬에서types.WrapperDescriptorType으로 노출됩니다.
-
PyObject *PyDescr_NewWrapper(PyTypeObject *type, struct wrapperbase *base, void *wrapped)¶
- 반환값: 새 참조.
새로운
PyWrapperDescr_Type타입의 래퍼 디스크립터를 생성합니다.이 함수는 내부용으로만 설계되었으며, 이 함수와 관련 API(
struct wrapperbase및PyWrapperFlag_KEYWORDS플래그)는 하위 호환성 이유로 공개되어 있습니다.C 함수를 래핑하는 기능은
PyCMethod_New()를 참조하십시오.
-
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_TYPE(descr)¶
디스크립터 descr 이 속한 타입에 대한 borrowed reference 를 반환합니다. 이는 파이썬에서
__objclass__로 접근할 수 있습니다.descr 은
PyDescr_New*함수 중 하나에 의해 생성된 디스크립터 객체(PyMethodDescr_Type,PyClassMethodDescr_Type,PyMemberDescr_Type,PyGetSetDescr_Type, 또는PyWrapperDescr_Type의 인스턴스)여야 합니다. 전달된 디스크립터가 이러한 유형 중 하나가 아닌 경우 동작이 정의되지 않습니다.
-
PyDescr_NAME(descr)¶
디스크립터 descr 의 이름을
str객체에 대한 borrowed reference 로 반환합니다. 이는 파이썬에서__name__으로 사용할 수 있습니다.descr 은
PyDescr_New*함수 중 하나에 의해 생성된 디스크립터 객체여야 합니다. 그렇지 않을 경우 동작이 정의되지 않습니다.
-
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을 반환합니다.