I 파이썬 측에서 생성 된 swig wrapped 객체와 C++ 측에서 생성 된 wrapped 객체에 관해 질문이 있습니다. 그때 할 경우Swig와 Python - 다른 객체 인스턴스
import engine
sphere_0 = engine.Sphere()
container = engine.Container()
container.add()
sphere_1 = container.get(0)
그리고 파이썬에서 랩의 첫 번째 인스턴스를 다음
%module engine
%{
#define SWIG_FILE_WITH_INIT
#include "sphere.h"
%}
// -------------------------------------------------------------------------
// Header files that should be parsed by SWIG
// -------------------------------------------------------------------------
%feature("pythonprepend") Sphere::Sphere() %{
print 'Hello'
%}
%include "sphere.h"
나는 다음과 같은 간단한 C++ 클래스 정의
#include <vector>
class Sphere
{
public:
Sphere(){};
};
class Container
{
public:
Container() : data_(0) {};
void add() {
data_.push_back(Sphere());
}
Sphere & get(int i) { return data_[i]; }
std::vector<Sphere> data_;
};
다음과 같은 꿀꺽 꿀꺽 설정을 가지고 가정 Sphere 클래스는
init 파이썬 배치 인터페이스 ('Hello'가 인쇄 됨) 메소드를 호출합니다.
그러나 인스턴스가 C++ 측에서 생성되는 두 번째 인스턴스 ('Hello'가 인쇄되지 않음)는 없습니다.
내 목표는 구성시 오브젝트에 파이썬 기능을 추가 할 수 있기 때문에, 위의 두 인스턴스화 시나리오 모두에 대해 올바른 방법에 대한 지침이있는 사람이 있으면 알려 주시면 기쁩니다. .
안부,
MADS
'sphere_1' (예제의 마지막 줄)을 구할 때 "hello"가 출력됩니까? – Dave
아니요 - 인쇄되지 않습니다. 이것은 __init__가 호출되는지 확인하는 간단한 테스트 일뿐입니다. – repoman