는 파이썬의 C API를 사용하여C API를 통해 Python 클래스에 정적 변수를 만들려면 어떻게해야합니까?
class Foo(object):
bar = 1
에 해당하고 싶어. 다시 말해 C를 사용하여 정적 변수가있는 Python 클래스를 만들고 싶습니다.
어떻게하면됩니까?
는 파이썬의 C API를 사용하여C API를 통해 Python 클래스에 정적 변수를 만들려면 어떻게해야합니까?
class Foo(object):
bar = 1
에 해당하고 싶어. 다시 말해 C를 사용하여 정적 변수가있는 Python 클래스를 만들고 싶습니다.
어떻게하면됩니까?
발견! type 객체의 tp_dict 요소를 설정하고 각각의 정적 변수에 대해 항목을 추가하여 채우는 것입니다. 다음 C 코드는 위의 Python 코드와 동일한 정적 변수를 만듭니다.
PyTypeObject type;
// ...other initialisation...
type.tp_dict = PyDict_New();
PyDict_SetItemString(type.tp_dict, "bar", PyInt_FromLong(1));
적절한 플래그를 사용하여 해당 소스 코드를 Py_CompileString으로 전달할 수 있습니다.
이미 클래스가있는 경우 PyObject_SetAttr을 사용할 수 있습니다.
감사합니다. 그것은 약간의 로터리 방법으로 보이지만, 클래스를위한 PyModule_AddIntConstant와 비슷한 것이 있습니까? – Vil
죄송합니다. 답변을 업데이트 한 것으로 나타났습니다. 도움에 다시 한번 감사드립니다. PyObject_SetAttr을 사용해 보았습니다.하지만 호출 할 때마다 "내장/확장 유형 X의 속성을 설정할 수 없습니다"라는 메시지가있는 TypeError가 나타납니다 (여기서 X는 내 유형 이름 임). 내가 잘못된 것을하고 있습니까? 아니면 단순히 유형 객체에서 작동하지 않습니까? – Vil
코드를 붙여 넣어야합니까? – joeforker