객체 프로토콜¶
-
Py_RETURN_NOTIMPLEMENTED
¶ C 함수 내에서
Py_NotImplemented
반환을 올바르게 처리합니다 (즉, NotImplemented의 참조 횟수를 증가시키고 반환합니다).
-
int
PyObject_Print
(PyObject *o, FILE *fp, int flags)¶ 파일 fp에 객체 o를 인쇄합니다. 에러 시
-1
을 반환합니다. flags 인자는 특정 인쇄 옵션을 활성화하는 데 사용됩니다. 현재 지원되는 유일한 옵션은Py_PRINT_RAW
입니다; 주어지면,repr()
대신 객체의str()
이 기록됩니다.
-
int
PyObject_HasAttr
(PyObject *o, PyObject *attr_name)¶ o에 attr_name 어트리뷰트가 있으면
1
을, 그렇지 않으면0
을 반환합니다. 이것은 파이썬 표현식hasattr(o, attr_name)
과 동등합니다. 이 함수는 항상 성공합니다.__getattr__()
과__getattribute__()
메서드를 호출하는 동안 발생하는 예외는 억제됨에 유의하십시오. 에러 보고를 얻으려면 대신PyObject_GetAttr()
을 사용하십시오.
-
int
PyObject_HasAttrString
(PyObject *o, const char *attr_name)¶ o에 attr_name 어트리뷰트가 있으면
1
을, 그렇지 않으면0
을 반환합니다. 이것은 파이썬 표현식hasattr(o, attr_name)
과 동등합니다. 이 함수는 항상 성공합니다.__getattr__()
과__getattribute__()
메서드를 호출하고 임시 문자열 객체를 만드는 중에 발생하는 예외는 억제됨에 유의하십시오. 에러 보고를 얻으려면 대신PyObject_GetAttrString()
을 사용하십시오.
-
PyObject*
PyObject_GetAttr
(PyObject *o, PyObject *attr_name)¶ - Return value: New reference.
객체 o에서 attr_name이라는 이름의 어트리뷰트를 가져옵니다. 성공하면 어트리뷰트 값을, 실패하면
NULL
을 반환합니다. 이것은 파이썬 표현식o.attr_name
과 동등합니다.
-
PyObject*
PyObject_GetAttrString
(PyObject *o, const char *attr_name)¶ - Return value: New reference.
객체 o에서 attr_name이라는 이름의 어트리뷰트를 가져옵니다. 성공하면 어트리뷰트 값을, 실패하면
NULL
을 반환합니다. 이것은 파이썬 표현식o.attr_name
과 동등합니다.
-
PyObject*
PyObject_GenericGetAttr
(PyObject *o, PyObject *name)¶ - Return value: New reference.
형 객체의
tp_getattro
슬롯에 배치되는 일반 어트리뷰트 게터(getter) 함수. 객체의 (있다면)__dict__
에 있는 어트리뷰트뿐만 아니라 객체의 MRO에 있는 클래스의 딕셔너리에 있는 디스크립터를 찾습니다. 디스크립터 구현하기에 요약된 것처럼, 데이터 디스크립터는 인스턴스 어트리뷰트보다 우선하지만, 비 데이터 디스크립터는 그렇지 않습니다. 그렇지 않으면,AttributeError
가 발생합니다.
-
int
PyObject_SetAttr
(PyObject *o, PyObject *attr_name, PyObject *v)¶ 객체 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)¶ 객체 o에 대해, attr_name이라는 이름의 어트리뷰트 값을 v 값으로 설정합니다. 실패 시 예외를 발생시키고
-1
을 반환합니다. 성공하면0
을 반환합니다. 이것은 파이썬 문장o.attr_name = v
와 동등합니다.v가
NULL
이면, 어트리뷰트가 삭제되지만, 이 기능은 폐지되었고PyObject_DelAttrString()
으로 대체되었습니다.
-
int
PyObject_GenericSetAttr
(PyObject *o, PyObject *name, PyObject *value)¶ 형 객체의
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)¶ - Return value: New reference.
__dict__
디스크립터의 게터(getter)를 위한 일반적인 구현. 필요하면 딕셔너리를 만듭니다.버전 3.3에 추가.
-
int
PyObject_GenericSetDict
(PyObject *o, PyObject *value, void *context)¶ __dict__
디스크립터의 세터(setter)를 위한 일반적인 구현. 이 구현은 딕셔너리 삭제를 허락하지 않습니다.버전 3.3에 추가.
-
PyObject*
PyObject_RichCompare
(PyObject *o1, PyObject *o2, int opid)¶ - Return value: New reference.
opid에 의해 지정된 연산을 사용하여 o1과 o2의 값을 비교합니다. opid는
Py_LT
,Py_LE
,Py_EQ
,Py_NE
,Py_GT
또는Py_GE
중 하나여야 하고 각각<
,<=
,==
,!=
,>
또는>=
에 해당합니다. 이는 파이썬 표현식o1 op o2
와 동등합니다. 여기서op
는 opid에 해당하는 연산자입니다. 성공 시 비교 값을, 실패 시NULL
을 반환합니다.
-
int
PyObject_RichCompareBool
(PyObject *o1, PyObject *o2, int opid)¶ opid에 의해 지정된 연산을 사용하여 o1과 o2의 값을 비교합니다. opid는
Py_LT
,Py_LE
,Py_EQ
,Py_NE
,Py_GT
또는Py_GE
중 하나여야 하고 각각<
,<=
,==
,!=
,>
또는>=
에 해당합니다. 에러 시-1
을, 결과가 거짓이면0
을, 그렇지 않으면1
을 반환합니다. 이는 파이썬 표현식o1 op o2
와 동등합니다. 여기서op
는 opid에 해당하는 연산자입니다.
참고
o1과 o2가 같은 객체이면, PyObject_RichCompareBool()
은 항상 Py_EQ
의 경우는 1
을, Py_NE
의 경우는 0
을 반환합니다.
-
PyObject*
PyObject_Repr
(PyObject *o)¶ - Return value: New reference.
객체 o의 문자열 표현을 계산합니다. 성공하면 문자열 표현을, 실패하면
NULL
을 반환합니다. 이것은 파이썬 표현식repr(o)
와 동등합니다.repr()
내장 함수에 의해 호출됩니다.버전 3.4에서 변경: 이 함수에는 이제 디버그 어서션이 포함되어 있어 활성 예외를 조용히 버리지 않도록 합니다.
-
PyObject*
PyObject_ASCII
(PyObject *o)¶ - Return value: New reference.
PyObject_Repr()
처럼, 객체 o의 문자열 표현을 계산하지만,\x
,\u
또는\U
이스케이프를 사용하여PyObject_Repr()
이 반환한 문자열에서 비 ASCII 문자를 이스케이프 합니다. 이것은 파이썬 2에서PyObject_Repr()
에 의해 반환된 것과 유사한 문자열을 생성합니다.ascii()
내장 함수에 의해 호출됩니다.
-
PyObject*
PyObject_Str
(PyObject *o)¶ - Return value: New reference.
객체 o의 문자열 표현을 계산합니다. 성공 시 문자열 표현을, 실패 시
NULL
을 반환합니다. 이것은 파이썬 표현식str(o)
와 동등합니다.str()
내장 함수에 의해, 따라서print()
함수에 의해서도 호출됩니다.버전 3.4에서 변경: 이 함수에는 이제 디버그 어서션이 포함되어 있어 활성 예외를 조용히 버리지 않도록 합니다.
-
PyObject*
PyObject_Bytes
(PyObject *o)¶ - Return value: New reference.
객체 o의 바이트열 표현을 계산합니다. 실패하면
NULL
을, 성공하면 바이트열 객체를 반환됩니다. 이는 o가 정수가 아닐 때 파이썬 표현식bytes(o)
와 동등합니다.bytes(o)
와 달리, o가 정수이면 0으로 초기화된 바이트열 객체 대신 TypeError가 발생합니다.
-
int
PyObject_IsSubclass
(PyObject *derived, PyObject *cls)¶ 클래스 derived가 클래스 cls와 동일하거나 cls에서 파생되었으면
1
을 반환하고, 그렇지 않으면0
을 반환합니다. 에러가 발생하면-1
을 반환합니다.cls가 튜플이면, cls의 모든 항목에 대해 검사가 수행됩니다. 적어도 하나의 검사에서
1
을 반환하면 결과는1
이 되고, 그렇지 않으면0
이 됩니다.cls에
__subclasscheck__()
메서드가 있으면, PEP 3119에 설명된 대로 서브 클래스 상태를 판별하기 위해 호출됩니다. 그렇지 않으면, derived가 직접 또는 간접 서브 클래스일 때 cls의 서브 클래스입니다, 즉cls.__mro__
에 포함되어 있습니다.일반적으로 클래스 객체(즉
type
이나 파생 클래스의 인스턴스)만 클래스로 간주합니다. 그러나, 객체는__bases__
어트리뷰트(베이스 클래스의 튜플이어야 합니다)를 가짐으로써 이를 재정의할 수 있습니다.
-
int
PyObject_IsInstance
(PyObject *inst, PyObject *cls)¶ inst가 cls 클래스나 cls의 서브 클래스의 인스턴스이면
1
을 반환하고, 그렇지 않으면0
을 반환합니다. 에러가 발생하면-1
을 반환하고 예외를 설정합니다.cls가 튜플이면, cls의 모든 항목에 대해 검사가 수행됩니다. 적어도 하나의 검사에서
1
을 반환하면 결과는1
이 되고, 그렇지 않으면0
이 됩니다.cls에
__instancecheck__()
메서드가 있으면, PEP 3119에 설명된 대로 서브 클래스 상태를 판별하기 위해 호출됩니다. 그렇지 않으면, inst는 해당 클래스가 cls의 서브 클래스일 때 cls의 인스턴스입니다.인스턴스 inst는
__class__
어트리뷰트를 가짐으로써 클래스로 간주하는 것을 재정의할 수 있습니다.객체 cls는
__bases__
어트리뷰트(베이스 클래스의 튜플이어야 합니다)를 가짐으로써, 클래스로 간주하는지와 베이스 클래스가 무엇인지를 재정의할 수 있습니다.
-
Py_hash_t
PyObject_Hash
(PyObject *o)¶ 객체 o의 해시값을 계산하고 반환합니다. 실패하면
-1
을 반환합니다. 이것은 파이썬 표현식hash(o)
와 동등합니다.버전 3.2에서 변경: 반환형은 이제 Py_hash_t입니다. 이것은 Py_ssize_t와 같은 크기의 부호 있는 정수입니다.
-
Py_hash_t
PyObject_HashNotImplemented
(PyObject *o)¶ type(o)
가 해시 가능하지 않음을 나타내는TypeError
를 설정하고-1
을 반환합니다. 이 함수는tp_hash
슬롯에 저장될 때 특수한 처방을 받아서, 인터프리터에 형이 해시 가능하지 않음을 명시적으로 알립니다.
-
int
PyObject_IsTrue
(PyObject *o)¶ 객체 o를 참으로 간주하면
1
을, 그렇지 않으면0
을 반환합니다. 이것은 파이썬 표현식not not o
와 동등합니다. 실패하면-1
을 반환합니다.
-
int
PyObject_Not
(PyObject *o)¶ 객체 o를 참으로 간주하면
0
을, 그렇지 않으면1
을 반환합니다. 이것은 파이썬 표현식not o
와 동등합니다. 실패하면-1
을 반환합니다.
-
PyObject*
PyObject_Type
(PyObject *o)¶ - Return value: New reference.
o가
NULL
이 아니면, 객체 o의 객체 형에 해당하는 형 객체를 반환합니다. 실패하면SystemError
를 발생시키고NULL
을 반환합니다. 이것은 파이썬 표현식type(o)
와 동등합니다. 이 함수는 반환 값의 참조 횟수를 증가시킵니다. 증가한 참조 횟수가 필요할 때를 제외하고,PyTypeObject*
형의 포인터를 반환하는 공통 표현식o->ob_type
대신 이 함수를 사용할 이유가 없습니다.
-
int
PyObject_TypeCheck
(PyObject *o, PyTypeObject *type)¶ 객체 o가 type 형이거나 type의 서브 형이면 참을 반환합니다. 두 매개 변수 모두
NULL
이 아니어야 합니다.
-
Py_ssize_t
PyObject_Size
(PyObject *o)¶ -
Py_ssize_t
PyObject_Length
(PyObject *o)¶ 객체 o의 길이를 반환합니다. 객체 o가 시퀀스와 매핑 프로토콜을 제공하면, 시퀀스 길이가 반환됩니다. 에러가 발생하면
-1
이 반환됩니다. 이것은 파이썬 표현식len(o)
와 동등합니다.
-
Py_ssize_t
PyObject_LengthHint
(PyObject *o, Py_ssize_t default)¶ o 객체의 추정된 길이를 반환합니다. 먼저 실제 길이를 반환하려고 시도한 다음,
__length_hint__()
를 사용하여 추정값을 반환하고, 마지막으로 기본값을 반환합니다. 에러 시-1
을 반환합니다. 이것은 파이썬 표현식operator.length_hint(o, default)
와 동등합니다.버전 3.4에 추가.
-
PyObject*
PyObject_GetItem
(PyObject *o, PyObject *key)¶ - Return value: New reference.
객체 key에 해당하는 o의 요소를 반환하거나 실패 시
NULL
을 반환합니다. 이것은 파이썬 표현식o[key]
와 동등합니다.
-
int
PyObject_SetItem
(PyObject *o, PyObject *key, PyObject *v)¶ 객체 key를 값 v에 매핑합니다. 실패 시 예외를 발생시키고
-1
을 반환합니다; 성공하면0
을 반환합니다. 이것은 파이썬 문장o[key] = v
와 동등합니다. 이 함수는 v에 대한 참조를 훔치지 않습니다.
-
int
PyObject_DelItem
(PyObject *o, PyObject *key)¶ 객체 o에서 객체 key에 대한 매핑을 제거합니다. 실패하면
-1
을 반환합니다. 이것은 파이썬 문장del o[key]
와 동등합니다.
-
PyObject*
PyObject_Dir
(PyObject *o)¶ - Return value: New reference.
이것은 파이썬 표현식
dir(o)
와 동등하며, 객체 인자에 적합한 문자열의 (비어있을 수 있는) 리스트를 반환하거나, 에러가 있으면NULL
을 반환합니다. 인자가NULL
이면, 파이썬dir()
과 비슷하며, 현재 지역(locals)의 이름들을 반환합니다; 이 경우, 실행 프레임이 활성화되어 있지 않으면NULL
이 반환되지만PyErr_Occurred()
는 거짓을 반환합니다.