Python

타입 힌팅을 위한 객체

타입 힌팅을 위한 다양한 내장 타입이 제공됩니다. 현재 두 가지 타입인 GenericAliasUnion 가 존재합니다. 오직 GenericAlias 만 C에 노출됩니다.

PyObject *Py_GenericAlias(PyObject *origin, PyObject *args)
…의 일부 안정 ABI 버전 3.9 이후로.

GenericAlias 객체를 생성합니다. 파이썬 클래스 types.GenericAlias 를 호출하는 것과 동일합니다. originargs 인자는 각각 GenericAlias__origin____args__ 어트리뷰트를 설정합니다. originPyTypeObject* 여야 하며, argsPyTupleObject* 또는 모든 종류의 PyObject* 가 될 수 있습니다. 전달된 args 가 튜플이 아닌 경우, 1-튜플이 자동으로 생성되고 __args__(args,) 로 설정됩니다. 인자에 대한 최소한의 확인만 수행되므로, origin 이 타입이 아니더라도 함수는 성공합니다. GenericAlias__parameters__ 어트리뷰트는 __args__ 로부터 지연 방식으로 생성됩니다. 실패 시 예외가 발생하고 NULL 이 반환됩니다.

확장 타입을 제네릭으로 만드는 방법의 예시는 다음과 같습니다:

...
static PyMethodDef my_obj_methods[] = {
    // Other methods.
    ...
    {"__class_getitem__", Py_GenericAlias, METH_O|METH_CLASS, "my_obj is generic over its contained type"}
    ...
}

더 보기

데이터 모델 메서드인 __class_getitem__() 입니다.

Added in version 3.9.

PyTypeObject Py_GenericAliasType
…의 일부 안정 ABI 버전 3.9 이후로.

Py_GenericAlias() 가 반환하는 객체의 C 타입입니다. 파이썬의 types.GenericAlias 와 동일합니다.

Added in version 3.9.