객체 프로토콜¶
-
Py_RETURN_NOTIMPLEMENTED
¶ Properly handle returning
Py_NotImplemented
from within a C function (that is, create a new strong reference to NotImplemented and return it).
-
int
PyObject_Print
(PyObject *o, FILE *fp, int flags)¶ Print an object o, on file fp. Returns
-1
on error. The flags argument is used to enable certain printing options. The only option currently supported isPy_PRINT_RAW
; if given, thestr()
of the object is written instead of therepr()
.
-
int
PyObject_HasAttr
(PyObject *o, PyObject *attr_name)¶ - Part of the Stable ABI.
Returns
1
if o has the attribute attr_name, and0
otherwise. This is equivalent to the Python expressionhasattr(o, attr_name)
. This function always succeeds.Note that exceptions which occur while calling
__getattr__()
and__getattribute__()
methods will get suppressed. To get error reporting usePyObject_GetAttr()
instead.
-
int
PyObject_HasAttrString
(PyObject *o, const char *attr_name)¶ - Part of the Stable ABI.
Returns
1
if o has the attribute attr_name, and0
otherwise. This is equivalent to the Python expressionhasattr(o, attr_name)
. This function always succeeds.Note that exceptions which occur while calling
__getattr__()
and__getattribute__()
methods and creating a temporary string object will get suppressed. To get error reporting usePyObject_GetAttrString()
instead.
-
PyObject *
PyObject_GetAttr
(PyObject *o, PyObject *attr_name)¶ - 반환값: 새 참조. Part of the Stable ABI.
객체 o에서 attr_name이라는 이름의 어트리뷰트를 가져옵니다. 성공하면 어트리뷰트 값을, 실패하면
NULL
을 반환합니다. 이것은 파이썬 표현식o.attr_name
과 동등합니다.
-
PyObject *
PyObject_GetAttrString
(PyObject *o, const char *attr_name)¶ - 반환값: 새 참조. Part of the Stable ABI.
Retrieve an attribute named attr_name from object o. Returns the attribute value on success, or
NULL
on failure. This is the equivalent of the Python expressiono.attr_name
.
-
PyObject *
PyObject_GenericGetAttr
(PyObject *o, PyObject *name)¶ - 반환값: 새 참조. Part of the Stable ABI.
형 객체의
tp_getattro
슬롯에 배치되는 일반 어트리뷰트 게터(getter) 함수. 객체의 (있다면)__dict__
에 있는 어트리뷰트뿐만 아니라 객체의 MRO에 있는 클래스의 딕셔너리에 있는 디스크립터를 찾습니다. 디스크립터 구현하기에 요약된 것처럼, 데이터 디스크립터는 인스턴스 어트리뷰트보다 우선하지만, 비 데이터 디스크립터는 그렇지 않습니다. 그렇지 않으면,AttributeError
가 발생합니다.
-
int
PyObject_SetAttr
(PyObject *o, PyObject *attr_name, PyObject *v)¶ - Part of the Stable ABI.
객체 o에 대해, attr_name이라는 이름의 어트리뷰트 값을 v 값으로 설정합니다. 실패 시 예외를 발생시키고
-1
을 반환합니다. 성공하면0
을 반환합니다. 이것은 파이썬 문장o.attr_name = v
와 동등합니다.v가
NULL
이면, 어트리뷰트가 삭제됩니다. 이 동작은 폐지되었고PyObject_DelAttr()
로 대체되었습니다만, 현재 제거할 계획이 없습니다.
-
int
PyObject_SetAttrString
(PyObject *o, const char *attr_name, PyObject *v)¶ - Part of the Stable ABI.
객체 o에 대해, attr_name이라는 이름의 어트리뷰트 값을 v 값으로 설정합니다. 실패 시 예외를 발생시키고
-1
을 반환합니다. 성공하면0
을 반환합니다. 이것은 파이썬 문장o.attr_name = v
와 동등합니다.v가
NULL
이면, 어트리뷰트가 삭제되지만, 이 기능은 폐지되었고PyObject_DelAttrString()
으로 대체되었습니다.
-
int
PyObject_GenericSetAttr
(PyObject *o, PyObject *name, PyObject *value)¶ - Part of the Stable ABI.
형 객체의
tp_setattro
슬롯에 배치되는 일반 어트리뷰트 세터(setter)와 딜리터(deleter) 함수. 객체의 MRO에 있는 클래스의 딕셔너리에서 데이터 디스크립터를 찾고, 발견되면 인스턴스 딕셔너리에 있는 어트리뷰트를 설정하거나 삭제하는 것보다 우선합니다. 그렇지 않으면, 객체의 (있다면)__dict__
에서 어트리뷰트가 설정되거나 삭제됩니다. 성공하면0
이 반환되고, 그렇지 않으면AttributeError
가 발생하고-1
이 반환됩니다.
-
int
PyObject_DelAttr
(PyObject *o, PyObject *attr_name)¶ 객체 o에 대해, attr_name이라는 이름의 어트리뷰트를 삭제합니다. 실패 시
-1
을 반환합니다. 이것은 파이썬 문장del o.attr_name
과 동등합니다.
-
int
PyObject_DelAttrString
(PyObject *o, const char *attr_name)¶ 객체 o에 대해, attr_name이라는 이름의 어트리뷰트를 삭제합니다. 실패 시
-1
을 반환합니다. 이것은 파이썬 문장del o.attr_name
과 동등합니다.
-
PyObject *
PyObject_GenericGetDict
(PyObject *o, void *context)¶ - 반환값: 새 참조. Part of the Stable ABI since version 3.10.
__dict__
디스크립터의 게터(getter)를 위한 일반적인 구현. 필요하면 딕셔너리를 만듭니다.버전 3.3에 추가.
-
int
PyObject_GenericSetDict
(PyObject *o, PyObject *value, void *context)¶ - Part of the Stable ABI since version 3.7.
__dict__
디스크립터의 세터(setter)를 위한 일반적인 구현. 이 구현은 딕셔너리 삭제를 허락하지 않습니다.버전 3.3에 추가.
-
PyObject *
PyObject_RichCompare
(PyObject *o1, PyObject *o2, int opid)¶ - 반환값: 새 참조. Part of the Stable ABI.
Compare the values of o1 and o2 using the operation specified by opid, which must be one of
Py_LT
,Py_LE
,Py_EQ
,Py_NE
,Py_GT
, orPy_GE
, corresponding to<
,<=
,==
,!=
,>
, or>=
respectively. This is the equivalent of the Python expressiono1 op o2
, whereop
is the operator corresponding to opid. Returns the value of the comparison on success, orNULL
on failure.
-
int
PyObject_RichCompareBool
(PyObject *o1, PyObject *o2, int opid)¶ - Part of the Stable ABI.
Compare the values of o1 and o2 using the operation specified by opid, which must be one of
Py_LT
,Py_LE
,Py_EQ
,Py_NE
,Py_GT
, orPy_GE
, corresponding to<
,<=
,==
,!=
,>
, or>=
respectively. Returns-1
on error,0
if the result is false,1
otherwise. This is the equivalent of the Python expressiono1 op o2
, whereop
is the operator corresponding to opid.
참고
If o1 and o2 are the same object, PyObject_RichCompareBool()
will always return 1
for Py_EQ
and 0
for Py_NE
.
-
PyObject *
PyObject_Format
(PyObject *obj, PyObject *format_spec)¶ - Part of the Stable ABI.
Format obj using format_spec. This is equivalent to the Python expression
format(obj, format_spec)
.format_spec may be
NULL
. In this case the call is equivalent toformat(obj)
. Returns the formatted string on success,NULL
on failure.
-
PyObject *
PyObject_Repr
(PyObject *o)¶ - 반환값: 새 참조. Part of the Stable ABI.
객체 o의 문자열 표현을 계산합니다. 성공하면 문자열 표현을, 실패하면
NULL
을 반환합니다. 이것은 파이썬 표현식repr(o)
와 동등합니다.repr()
내장 함수에 의해 호출됩니다.버전 3.4에서 변경: 이 함수에는 이제 디버그 어서션이 포함되어 있어 활성 예외를 조용히 버리지 않도록 합니다.
-
PyObject *
PyObject_ASCII
(PyObject *o)¶ - 반환값: 새 참조. Part of the Stable ABI.
PyObject_Repr()
처럼, 객체 o의 문자열 표현을 계산하지만,\x
,\u
또는\U
이스케이프를 사용하여PyObject_Repr()
이 반환한 문자열에서 비 ASCII 문자를 이스케이프 합니다. 이것은 파이썬 2에서PyObject_Repr()
에 의해 반환된 것과 유사한 문자열을 생성합니다.ascii()
내장 함수에 의해 호출됩니다.
-
PyObject *
PyObject_Str
(PyObject *o)¶ - 반환값: 새 참조. Part of the Stable ABI.
객체 o의 문자열 표현을 계산합니다. 성공 시 문자열 표현을, 실패 시
NULL
을 반환합니다. 이것은 파이썬 표현식str(o)
와 동등합니다.str()
내장 함수에 의해, 따라서print()
함수에 의해서도 호출됩니다.버전 3.4에서 변경: 이 함수에는 이제 디버그 어서션이 포함되어 있어 활성 예외를 조용히 버리지 않도록 합니다.
-
PyObject *
PyObject_Bytes
(PyObject *o)¶ - 반환값: 새 참조. Part of the Stable ABI.
객체 o의 바이트열 표현을 계산합니다. 실패하면
NULL
을, 성공하면 바이트열 객체를 반환됩니다. 이는 o가 정수가 아닐 때 파이썬 표현식bytes(o)
와 동등합니다.bytes(o)
와 달리, o가 정수이면 0으로 초기화된 바이트열 객체 대신 TypeError가 발생합니다.
-
int
PyObject_IsSubclass
(PyObject *derived, PyObject *cls)¶ - Part of the Stable ABI.
클래스 derived가 클래스 cls와 동일하거나 cls에서 파생되었으면
1
을 반환하고, 그렇지 않으면0
을 반환합니다. 에러가 발생하면-1
을 반환합니다.cls가 튜플이면, cls의 모든 항목에 대해 검사가 수행됩니다. 적어도 하나의 검사에서
1
을 반환하면 결과는1
이 되고, 그렇지 않으면0
이 됩니다.If cls has a
__subclasscheck__()
method, it will be called to determine the subclass status as described in PEP 3119. Otherwise, derived is a subclass of cls if it is a direct or indirect subclass, i.e. contained incls.__mro__
.Normally only class objects, i.e. instances of
type
or a derived class, are considered classes. However, objects can override this by having a__bases__
attribute (which must be a tuple of base classes).
-
int
PyObject_IsInstance
(PyObject *inst, PyObject *cls)¶ - Part of the Stable ABI.
inst가 cls 클래스나 cls의 서브 클래스의 인스턴스이면
1
을 반환하고, 그렇지 않으면0
을 반환합니다. 에러가 발생하면-1
을 반환하고 예외를 설정합니다.cls가 튜플이면, cls의 모든 항목에 대해 검사가 수행됩니다. 적어도 하나의 검사에서
1
을 반환하면 결과는1
이 되고, 그렇지 않으면0
이 됩니다.If cls has a
__instancecheck__()
method, it will be called to determine the subclass status as described in PEP 3119. Otherwise, inst is an instance of cls if its class is a subclass of cls.An instance inst can override what is considered its class by having a
__class__
attribute.An object cls can override if it is considered a class, and what its base classes are, by having a
__bases__
attribute (which must be a tuple of base classes).
-
Py_hash_t
PyObject_Hash
(PyObject *o)¶ - Part of the Stable ABI.
객체 o의 해시값을 계산하고 반환합니다. 실패하면
-1
을 반환합니다. 이것은 파이썬 표현식hash(o)
와 동등합니다.버전 3.2에서 변경: 반환형은 이제 Py_hash_t입니다. 이것은
Py_ssize_t
와 같은 크기의 부호 있는 정수입니다.
-
Py_hash_t
PyObject_HashNotImplemented
(PyObject *o)¶ - Part of the Stable ABI.
type(o)
가 해시 가능하지 않음을 나타내는TypeError
를 설정하고-1
을 반환합니다. 이 함수는tp_hash
슬롯에 저장될 때 특수한 처방을 받아서, 인터프리터에 형이 해시 가능하지 않음을 명시적으로 알립니다.
-
int
PyObject_IsTrue
(PyObject *o)¶ - Part of the Stable ABI.
객체 o를 참으로 간주하면
1
을, 그렇지 않으면0
을 반환합니다. 이것은 파이썬 표현식not not o
와 동등합니다. 실패하면-1
을 반환합니다.
-
int
PyObject_Not
(PyObject *o)¶ - Part of the Stable ABI.
객체 o를 참으로 간주하면
0
을, 그렇지 않으면1
을 반환합니다. 이것은 파이썬 표현식not o
와 동등합니다. 실패하면-1
을 반환합니다.
-
PyObject *
PyObject_Type
(PyObject *o)¶ - 반환값: 새 참조. Part of the Stable ABI.
o가
NULL
이 아니면, 객체 o의 객체 형에 해당하는 형 객체를 반환합니다. 실패하면SystemError
를 발생시키고NULL
을 반환합니다. 이것은 파이썬 표현식type(o)
와 동등합니다. 이 함수는 반환 값에 대한 새로운 강한 참조를 만듭니다. 새로운 강한 참조가 필요할 때를 제외하고,PyTypeObject*
형의 포인터를 반환하는Py_TYPE()
함수 대신 이 함수를 사용할 이유가 없습니다.
-
int
PyObject_TypeCheck
(PyObject *o, PyTypeObject *type)¶ 객체 o가 type 형이거나 type의 서브 형이면 0이 아닌 값을 반환하고, 그렇지 않으면
0
을 반환합니다. 두 매개 변수 모두NULL
이 아니어야 합니다.
-
Py_ssize_t
PyObject_Size
(PyObject *o)¶ -
Py_ssize_t
PyObject_Length
(PyObject *o)¶ - Part of the Stable ABI.
객체 o의 길이를 반환합니다. 객체 o가 시퀀스와 매핑 프로토콜을 제공하면, 시퀀스 길이가 반환됩니다. 에러가 발생하면
-1
이 반환됩니다. 이것은 파이썬 표현식len(o)
와 동등합니다.
-
Py_ssize_t
PyObject_LengthHint
(PyObject *o, Py_ssize_t defaultvalue)¶ o 객체의 추정된 길이를 반환합니다. 먼저 실제 길이를 반환하려고 시도한 다음,
__length_hint__()
를 사용하여 추정값을 반환하고, 마지막으로 기본값을 반환합니다. 에러 시-1
을 반환합니다. 이것은 파이썬 표현식operator.length_hint(o, defaultvalue)
와 동등합니다.버전 3.4에 추가.
-
PyObject *
PyObject_GetItem
(PyObject *o, PyObject *key)¶ - 반환값: 새 참조. Part of the Stable ABI.
객체 key에 해당하는 o의 요소를 반환하거나 실패 시
NULL
을 반환합니다. 이것은 파이썬 표현식o[key]
와 동등합니다.
-
int
PyObject_SetItem
(PyObject *o, PyObject *key, PyObject *v)¶ - Part of the Stable ABI.
객체 key를 값 v에 매핑합니다. 실패 시 예외를 발생시키고
-1
을 반환합니다; 성공하면0
을 반환합니다. 이것은 파이썬 문장o[key] = v
와 동등합니다. 이 함수는 v에 대한 참조를 훔치지 않습니다.
-
int
PyObject_DelItem
(PyObject *o, PyObject *key)¶ - Part of the Stable ABI.
객체 o에서 객체 key에 대한 매핑을 제거합니다. 실패하면
-1
을 반환합니다. 이것은 파이썬 문장del o[key]
와 동등합니다.
-
PyObject *
PyObject_Dir
(PyObject *o)¶ - 반환값: 새 참조. Part of the Stable ABI.
이것은 파이썬 표현식
dir(o)
와 동등하며, 객체 인자에 적합한 문자열의 (비어있을 수 있는) 리스트를 반환하거나, 에러가 있으면NULL
을 반환합니다. 인자가NULL
이면, 파이썬dir()
과 비슷하며, 현재 지역(locals)의 이름들을 반환합니다; 이 경우, 실행 프레임이 활성화되어 있지 않으면NULL
이 반환되지만PyErr_Occurred()
는 거짓을 반환합니다.
-
PyObject *
PyObject_GetIter
(PyObject *o)¶ - 반환값: 새 참조. Part of the Stable ABI.
이것은 파이썬 표현식
iter(o)
와 동등합니다. 객체 인자에 대한 새로운 이터레이터를 반환하거나, 객체가 이미 이터레이터이면 객체 자체를 반환합니다. 객체를 이터레이트 할 수 없으면TypeError
를 발생시키고NULL
을 반환합니다.
-
PyObject *
PyObject_GetAIter
(PyObject *o)¶ - 반환값: 새 참조. Part of the Stable ABI since version 3.10.
이것은 파이썬 표현식
aiter(o)
와 동등합니다.AsyncIterable
을 받아서 그 것의AsyncIterator
를 반환합니다. 보통 새 이터레이터이지만, 인자가AsyncIterator
면 그 자신을 반환합니다. 객체를 이터레이트 할 수 없으면TypeError
를 발생시키고NULL
을 반환합니다.버전 3.10에 추가.