C API와 함께 파이썬으로 선언 된 파이썬 클래스 인스턴스 생성
-
18-09-2019 - |
문제
나는 정의 된 파이썬 클래스의 인스턴스를 만들고 싶습니다. __main__
C API의 범위.
예를 들어, 클래스가 호출됩니다 MyClass
다음과 같이 정의됩니다.
class MyClass:
def __init__(self):
pass
수업 유형은 아래에 산다 __main__
범위.
C 응용 프로그램 내 에서이 클래스의 인스턴스를 만들고 싶습니다. 이것은 단순히 가능할 수있었습니다 PyInstance_New
클래스 이름이 필요합니다. 그러나이 함수는 Python3에서 사용할 수 없습니다.
대안에 대한 모든 도움이나 제안에 감사드립니다.
고마워요, 폴
해결책
가장 간단한 접근법은 다음과 같습니다.
/* get sys.modules dict */
PyObject* sys_mod_dict = PyImport_GetModuleDict();
/* get the __main__ module object */
PyObject* main_mod = PyMapping_GetItemString(sys_mod_dict, "__main__");
/* call the class inside the __main__ module */
PyObject* instance = PyObject_CallMethod(main_mod, "MyClass", "");
물론 오류 확인. 당신은 decref 만 필요합니다 instance
당신이 그것을 끝내면, 다른 두 사람은 빌린 참조입니다.
제휴하지 않습니다 StackOverflow