형 객체¶
-
PyTypeObject PyType_Type¶
- Part of the 안정 ABI.
이것은 형 객체의 형 객체입니다; 파이썬 계층의
type
과 같은 객체입니다.
-
int PyType_Check(PyObject *o)¶
객체 o가 표준형 객체에서 파생된 형의 인스턴스를 포함하여 형 객체면 0이 아닌 값을 반환합니다. 다른 모든 경우 0을 반환합니다. 이 함수는 항상 성공합니다.
-
int PyType_CheckExact(PyObject *o)¶
객체 o가 형 객체이지만, 표준형 객체의 서브 형이 아니면 0이 아닌 값을 반환합니다. 다른 모든 경우 0을 반환합니다. 이 함수는 항상 성공합니다.
-
unsigned long PyType_GetFlags(PyTypeObject *type)¶
- Part of the 안정 ABI.
type의
tp_flags
멤버를 반환합니다. 이 함수는 주로Py_LIMITED_API
와 함께 사용하기 위한 것입니다; 개별 플래그 비트는 파이썬 배포 간에 안정적인 것으로 보장되지만,tp_flags
자체에 대한 액세스는 제한된 API 일부가 아닙니다.버전 3.2에 추가.
버전 3.4에서 변경: 반환형은 이제
long
이 아니라unsigned long
입니다.
-
void PyType_Modified(PyTypeObject *type)¶
- Part of the 안정 ABI.
형과 그것의 모든 서브 형에 대한 내부 검색 캐시를 무효로 합니다. 형의 어트리뷰트나 베이스 클래스를 수동으로 수정한 후에는 이 함수를 호출해야 합니다.
-
int PyType_HasFeature(PyTypeObject *o, int feature)¶
형 객체 o가 기능 feature를 설정하면 0이 아닌 값을 반환합니다. 형 기능은 단일 비트 플래그로 표시됩니다.
-
int PyType_IS_GC(PyTypeObject *o)¶
형 객체가 순환 검출기에 대한 지원을 포함하고 있으면 참을 반환합니다. 이것은 형 플래그
Py_TPFLAGS_HAVE_GC
를 검사합니다.
-
int PyType_IsSubtype(PyTypeObject *a, PyTypeObject *b)¶
- Part of the 안정 ABI.
a가 b의 서브 형이면 참을 반환합니다.
This function only checks for actual subtypes, which means that
__subclasscheck__()
is not called on b. CallPyObject_IsSubclass()
to do the same check thatissubclass()
would do.
-
PyObject *PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems)¶
- 반환값: 새 참조. Part of the 안정 ABI.
형 객체의
tp_alloc
슬롯을 위한 일반 처리기. 파이썬의 기본 메모리 할당 메커니즘을 사용하여 새 인스턴스를 할당하고 모든 내용을NULL
로 초기화합니다.
-
PyObject *PyType_GenericNew(PyTypeObject *type, PyObject *args, PyObject *kwds)¶
- 반환값: 새 참조. Part of the 안정 ABI.
형 객체의
tp_new
슬롯을 위한 일반 처리기. 형의tp_alloc
슬롯을 사용하여 새 인스턴스를 만듭니다.
-
int PyType_Ready(PyTypeObject *type)¶
- Part of the 안정 ABI.
형 개체를 마무리합니다. 초기화를 완료하려면 모든 형 객체에 대해 이 메서드를 호출해야 합니다. 이 함수는 형의 베이스 클래스에서 상속된 슬롯을 추가합니다. 성공 시
0
을 반환하고, 오류 시-1
을 반환하고 예외를 설정합니다.참고
If some of the base classes implements the GC protocol and the provided type does not include the
Py_TPFLAGS_HAVE_GC
in its flags, then the GC protocol will be automatically implemented from its parents. On the contrary, if the type being created does includePy_TPFLAGS_HAVE_GC
in its flags then it must implement the GC protocol itself by at least implementing thetp_traverse
handle.
-
PyObject *PyType_GetName(PyTypeObject *type)¶
- 반환값: 새 참조. Part of the 안정 ABI 버전 3.11 이후로.
Return the type’s name. Equivalent to getting the type’s
__name__
attribute.버전 3.11에 추가.
-
PyObject *PyType_GetQualName(PyTypeObject *type)¶
- 반환값: 새 참조. Part of the 안정 ABI 버전 3.11 이후로.
Return the type’s qualified name. Equivalent to getting the type’s
__qualname__
attribute.버전 3.11에 추가.
-
void *PyType_GetSlot(PyTypeObject *type, int slot)¶
- Part of the 안정 ABI 버전 3.4 이후로.
지정된 슬롯에 저장된 함수 포인터를 반환합니다. 결과가
NULL
이면, 슬롯이NULL
이거나 함수가 유효하지 않은 매개 변수로 호출되었음을 나타냅니다. 호출자는 일반적으로 결과 포인터를 적절한 함수 형으로 캐스팅합니다.slot 인자의 가능한 값은
PyType_Slot.slot
을 참조하십시오.버전 3.4에 추가.
버전 3.10에서 변경:
PyType_GetSlot()
can now accept all types. Previously, it was limited to heap types.
-
PyObject *PyType_GetModule(PyTypeObject *type)¶
- Part of the 안정 ABI 버전 3.10 이후로.
PyType_FromModuleAndSpec()
를 사용하여 형을 만들 때 지정된 형과 관련된 모듈 객체를 반환합니다.주어진 형과 연관된 모듈이 없으면,
TypeError
를 설정하고NULL
을 반환합니다.이 함수는 일반적으로 메서드가 정의된 모듈을 가져오는 데 사용됩니다. 이러한 메서드에서,
PyType_GetModule(Py_TYPE(self))
는 의도한 결과를 반환하지 않을 수 있음에 유의하십시오.Py_TYPE(self)
는 의도한 클래스의 서브 클래스일 수 있으며, 서브 클래스가 반드시 슈퍼 클래스와 같은 모듈에 정의된 것은 아닙니다. 메서드를 정의하는 클래스를 얻으려면PyCMethod
를 참조하십시오.PyCMethod
를 사용할 수 없는 경우는PyType_GetModuleByDef()
를 참조하세요.버전 3.9에 추가.
-
void *PyType_GetModuleState(PyTypeObject *type)¶
- Part of the 안정 ABI 버전 3.10 이후로.
주어진 형과 관련된 모듈 객체의 상태를 반환합니다.
PyType_GetModule()
결과에PyModule_GetState()
를 호출하는 바로 가기입니다.주어진 형과 연관된 모듈이 없으면,
TypeError
를 설정하고NULL
을 반환합니다.type에 연관된 모듈이 있지만, 상태가
NULL
이면, 예외를 설정하지 않고NULL
을 반환합니다.버전 3.9에 추가.
-
PyObject *PyType_GetModuleByDef(PyTypeObject *type, struct PyModuleDef *def)¶
Find the first superclass whose module was created from the given
PyModuleDef
def, and return that module.모듈을 찾을 수 없으면,
TypeError
를 발생시키고NULL
을 반환합니다.This function is intended to be used together with
PyModule_GetState()
to get module state from slot methods (such astp_init
ornb_add
) and other places where a method’s defining class cannot be passed using thePyCMethod
calling convention.버전 3.11에 추가.
힙에 할당된 형 만들기¶
다음 함수와 구조체는 힙 형을 만드는 데 사용됩니다.
-
PyObject *PyType_FromModuleAndSpec(PyObject *module, PyType_Spec *spec, PyObject *bases)¶
- 반환값: 새 참조. Part of the 안정 ABI 버전 3.10 이후로.
Creates and returns a heap type from the spec (
Py_TPFLAGS_HEAPTYPE
).베이스 클래스를 지정하는 데 bases 인자를 사용할 수 있습니다; 하나의 클래스 또는 클래스의 튜플일 수 있습니다. bases가
NULL
이면, Py_tp_bases 슬롯이 대신 사용됩니다. 그 또한NULL
이면, Py_tp_base 슬롯이 대신 사용됩니다. 그 또한NULL
이면, 새 형은object
에서 파생됩니다.module 인자는 새 클래스가 정의된 모듈을 기록하는 데 사용할 수 있습니다. 모듈 객체나
NULL
이어야 합니다.NULL
이 아니면, 모듈은 새 형과 연관되며 나중에PyType_GetModule()
로 가져올 수 있습니다. 연관된 모듈은 서브 클래스에 상속되지 않습니다; 각 클래스에 대해 개별적으로 지정해야 합니다.이 함수는 새로운 형에
PyType_Ready()
를 호출합니다.버전 3.9에 추가.
버전 3.10에서 변경: The function now accepts a single class as the bases argument and
NULL
as thetp_doc
slot.
-
PyObject *PyType_FromSpecWithBases(PyType_Spec *spec, PyObject *bases)¶
- 반환값: 새 참조. Part of the 안정 ABI 버전 3.3 이후로.
Equivalent to
PyType_FromModuleAndSpec(NULL, spec, bases)
.버전 3.3에 추가.
-
PyObject *PyType_FromSpec(PyType_Spec *spec)¶
- 반환값: 새 참조. Part of the 안정 ABI.
Equivalent to
PyType_FromSpecWithBases(spec, NULL)
.
-
type PyType_Spec¶
- Part of the 안정 ABI (including all members).
형의 행동을 정의하는 구조체.
-
const char *PyType_Spec.name¶
형의 이름,
PyTypeObject.tp_name
을 설정하는 데 사용됩니다.
-
int PyType_Spec.basicsize¶
-
int PyType_Spec.itemsize¶
Size of the instance in bytes, used to set
PyTypeObject.tp_basicsize
andPyTypeObject.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_Spec.name¶
-
type PyType_Slot¶
- Part of the 안정 ABI (including all members).
형의 선택적 기능을 정의하는 구조체, 슬롯 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
The following fields cannot be set at all using
PyType_Spec
andPyType_Slot
:tp_weaklistoffset
(see PyMemberDef)tp_dictoffset
(see PyMemberDef)
일부 플랫폼에서는
Py_tp_bases
나Py_tp_base
를 설정하는 것이 문제가 될 수 있습니다. 문제를 피하려면, 대신PyType_FromSpecWithBases()
의 bases 인자를 사용하십시오.버전 3.9에서 변경:
PyBufferProcs
의 슬롯은 제한 없는 API에서 설정할 수 있습니다.버전 3.11에서 변경:
bf_getbuffer
andbf_releasebuffer
are now available under the limited API.
-
void *PyType_Slot.pfunc¶
슬롯의 원하는 값입니다. 대부분 이것은 함수에 대한 포인터입니다.
Slots other than
Py_tp_doc
may not beNULL
.
-
int PyType_Slot.slot¶