2016-10-24 12 views
0

기존 객체의 객체 참조를 가져 오는 방법이 있습니까? 이 포함 된 Python 코드입니까? 즉기존 변수의 이름에서 PyObject 참조를 얻을 수 있습니까?

: , 'OBJ'이미 (스크립트에 의해 생성) 존재 라는 객체가 나는이의 PyObject * 참고로 "변환"할 필요가 같은 함수가있는 경우 :의 PyObject * getObjectReference은 (char * name)?

편집 : 예를하는 방법으로 , 의 내가, 코드의 한 부분에서 몇 가지 모듈을 가져 봅시다뿐만 아니라

PyRun_SimpleString("var = 1"); 

(또는를 사용하여 같은 변수를 정의하는 외부 스크립트가 될 수)

이제 코드의 다른 지점에서 해당 변수를 가져 오려고합니다. 내가

PyObject *varPy = PyObject_GetGlobalObject("var"); 

"reading a global variable of python in c"처럼 뭔가를 찾고 있어요 부분적으로 암시 적으로 그것을 만든 모듈에 대한 참조를하지 않고 글로벌 정의 변수를 검색 할 수 없습니다 것을 말함으로써 내 질문에 대답. 이 올바른지?

+1

할 일을 보여주는 코드를 더 추가 할 수 있습니까? – tynn

+0

편집에 대한 응답으로 : 변수가있는 모듈의 이름을 아는 경우 가져 와서 모듈에 대한 참조를 가져올 수 있습니다 (이미 가져온 모듈을 가져 오는 데는 문제가 없습니다). – DavidW

+0

또한'PyRun_SimpleString'에 대한 문서를 살펴보면'__main__' 모듈이 실행되었음을 알려줍니다. – DavidW

답변

0

reading a global variable of python in c과 내가 만든 몇 가지 테스트로 DavidW에서 수집 한 정보를 어셈블합니다 (도움 주셔서 감사합니다).

는, 이미로드 된 모듈에 대한 참조를 얻기 위해 사용

이름으로 참조하는 전역으로 정의 변수에 대한 참조를 가져 주요 모듈을 가져 얻기 위하여
PyImport_AddModule("module_name"); 

:

PyObject *mainModule = PyImport_AddModule("__main__"); 
PyObject *var = PyObject_GetAttrString(mainModule, "var_name"); 

변수가 다른 모듈/스크립트 내에서 정의 된 경우 해당 모듈에서만 볼 수 있습니다 (전역 적으로는 볼 수 없음). 따라서 ""을 해당 모듈의 이름으로 변경해야합니다.