2010-01-14 1 views
0

함수 foo가 포함 된 임베디드 파이썬 코드가 있다고 가정하면, 그 함수에 대한 참조를 얻는 가장 좋은 방법은 무엇입니까 (PyObject_CallObject와 함께 사용하기 위해)?임베디드 파이썬 함수에 대한 C 참조를 이름으로 가져 옵니까?

한 가지 방법은 수동으로 또는 리플렉션을 사용하여 각 기능을 함수 이름과 함께 등록하는 것입니다. 이것은 잔인한 것 같습니다.

또 다른 방법은 함수 이름을 사용하고 함수에 대한 참조를 반환하는 "loader"함수를 만드는 것입니다. 더 나은,하지만 난 여전히 C와 로더 함수를 등록해야합니다.

나는 더 많은 파이썬 코드를 작성하거나하지 않고 이것을 할 수있는 더 좋은 방법이 누락 되었습니까?

답변

1

embedding Python에 대한 설명서의 섹션을 읽어보십시오. 함수를 포함하는 모듈에 대한 참조가 있다고 생각합니다. 마지막에는 객체에서 함수 참조를 가져 오는 방법을 보여주는 예제가 있습니다.

pFunc = PyObject_GetAttrString(pModule, argv[2]); 
/* pFunc is a new reference */ 

if (pFunc && PyCallable_Check(pFunc)) { 
    ... 
} 
Py_XDECREF(pFunc);