형 객체¶
-
PyTypeObject
¶ 내장형을 기술하는 데 사용되는 객체의 C 구조체.
-
unsigned int
PyType_ClearCache
()¶ 내부 조회 캐시를 지웁니다. 현재의 버전 태그를 반환합니다.
-
unsigned long
PyType_GetFlags
(PyTypeObject* type)¶ type의
tp_flags
멤버를 반환합니다. 이 함수는 주로 Py_LIMITED_API와 함께 사용하기 위한 것입니다; 개별 플래그 비트는 파이썬 배포 간에 안정적인 것으로 보장되지만,tp_flags
자체에 대한 액세스는 제한된 API 일부가 아닙니다.버전 3.2에 추가.
버전 3.4에서 변경: 반환형은 이제
long
이 아니라unsigned long
입니다.
-
void
PyType_Modified
(PyTypeObject *type)¶ 형과 그것의 모든 서브 형에 대한 내부 검색 캐시를 무효로 합니다. 형의 어트리뷰트나 베이스 클래스를 수동으로 수정한 후에는 이 함수를 호출해야 합니다.
-
int
PyType_HasFeature
(PyTypeObject *o, int feature)¶ 형 객체 o가 기능 feature를 설정하면 참을 반환합니다. 형 기능은 단일 비트 플래그로 표시됩니다.
-
int
PyType_IS_GC
(PyTypeObject *o)¶ 형 객체가 순환 검출기에 대한 지원을 포함하고 있으면 참을 반환합니다. 이것은 형 플래그
Py_TPFLAGS_HAVE_GC
를 검사합니다.
-
int
PyType_IsSubtype
(PyTypeObject *a, PyTypeObject *b)¶ a가 b의 서브 형이면 참을 반환합니다.
이 함수는 실제 서브 형만 검사합니다. 즉,
__subclasscheck__()
가 b에 대해 호출되지 않습니다.issubclass()
가 수행하는 것과 같은 검사를 하려면PyObject_IsSubclass()
를 호출하십시오.
-
PyObject*
PyType_GenericAlloc
(PyTypeObject *type, Py_ssize_t nitems)¶ - Return value: New reference.
형 객체의
tp_alloc
슬롯을 위한 일반 처리기. 파이썬의 기본 메모리 할당 메커니즘을 사용하여 새 인스턴스를 할당하고 모든 내용을NULL
로 초기화합니다.
-
PyObject*
PyType_GenericNew
(PyTypeObject *type, PyObject *args, PyObject *kwds)¶ - Return value: New reference.
형 객체의
tp_new
슬롯을 위한 일반 처리기. 형의tp_alloc
슬롯을 사용하여 새 인스턴스를 만듭니다.
-
int
PyType_Ready
(PyTypeObject *type)¶ 형 개체를 마무리합니다. 초기화를 완료하려면 모든 형 객체에 대해 이 메서드를 호출해야 합니다. 이 함수는 형의 베이스 클래스에서 상속된 슬롯을 추가합니다. 성공 시
0
을 반환하고, 오류 시-1
을 반환하고 예외를 설정합니다.
-
void*
PyType_GetSlot
(PyTypeObject *type, int slot)¶ 지정된 슬롯에 저장된 함수 포인터를 반환합니다. 결과가
NULL
이면, 슬롯이NULL
이거나 함수가 유효하지 않은 매개 변수로 호출되었음을 나타냅니다. 호출자는 일반적으로 결과 포인터를 적절한 함수 형으로 캐스팅합니다.slot 인자의 가능한 값은
PyType_Slot.slot
을 참조하십시오.type이 힙 형이 아니면 예외가 발생합니다.
버전 3.4에 추가.
힙에 할당된 형 만들기¶
다음 함수와 구조체는 힙 형을 만드는 데 사용됩니다.
-
PyObject*
PyType_FromSpecWithBases
(PyType_Spec *spec, PyObject *bases)¶ - Return value: New reference.
spec으로 힙 형 객체를 만들고 반환합니다 (
Py_TPFLAGS_HEAPTYPE
).bases가 튜플이면, 생성된 힙 형에는 그것에 포함된 모든 형이 베이스형으로 포함됩니다.
If bases is
NULL
, the Py_tp_bases slot is used instead. If that also isNULL
, the Py_tp_base slot is used instead. If that also isNULL
, the new type derives fromobject
.이 함수는 새로운 형에
PyType_Ready()
를 호출합니다.버전 3.3에 추가.
-
PyObject*
PyType_FromSpec
(PyType_Spec *spec)¶ - Return value: New reference.
PyType_FromSpecWithBases(spec, NULL)
와 동등합니다.
-
PyType_Spec
¶ 형의 행동을 정의하는 구조체.
-
const char*
PyType_Spec.name
¶ 형의 이름,
PyTypeObject.tp_name
을 설정하는 데 사용됩니다.
-
int
PyType_Spec.basicsize
¶
-
int
PyType_Spec.itemsize
¶ 인스턴스의 크기(바이트),
PyTypeObject.tp_basicsize
와PyTypeObject.tp_itemsize
를 설정하는 데 사용됩니다.
-
int
PyType_Spec.flags
¶ 형 플래그,
PyTypeObject.tp_flags
를 설정하는 데 사용됩니다.Py_TPFLAGS_HEAPTYPE
플래그가 설정되어 있지 않으면,PyType_FromSpecWithBases()
가 자동으로 플래그를 설정합니다.
-
PyType_Slot *
PyType_Spec.slots
¶ PyType_Slot
구조체의 배열. 특수 슬롯값{0, NULL}
에 의해 종료됩니다.
-
const char*
-
PyType_Slot
¶ 형의 선택적 기능을 정의하는 구조체, 슬롯 ID와 값 포인터를 포함합니다.
-
int
PyType_Slot.slot
¶ 슬롯 ID.
슬롯 ID는 구조체
PyTypeObject
,PyNumberMethods
,PySequenceMethods
,PyMappingMethods
및PyAsyncMethods
의 필드 이름에Py_
접두사를 붙인 이름을 사용합니다. 예를 들어, :PyTypeObject.tp_dealloc
을 설정하는Py_tp_dealloc
PyNumberMethods.nb_add
를 설정하는Py_nb_add
PySequenceMethods.sq_length
를 설정하는Py_sq_length
다음 필드는
PyType_Spec
과PyType_Slot
을 사용하여 설정할 수 없습니다:tp_print
Setting
Py_tp_bases
orPy_tp_base
may be problematic on some platforms. To avoid issues, use the bases argument ofPyType_FromSpecWithBases()
instead.
-
void *
PyType_Slot.pfunc
¶ 슬롯의 원하는 값입니다. 대부분 이것은 함수에 대한 포인터입니다.
NULL
이 아닐 수 있습니다.
-
int