我使用CDEF定义了一个Python类,它用Cython来封装C++类,并且它工作正常。但是当我在python或class中使用help(class)时呢?在ipython中,我得到了如下信息:
>>> TestClass.CTestClass?
Init signature: TestClass.CTestClass()
Docstring: <no docstring>
File: ~/Coding/CythonWithCppTutorials/ClassCythonCPPWithMemberFunctions/TestClass.so
Type: type
它不显示任何doc字符串或init签名,我想显示它,如何让它显示这个?在
Cython包装如下:
在测试类.pyx在
^{pr2}$和C++代码看起来是这样的:
在测试类c.cpp在
#include <iostream>
class TestClass{
public:
TestClass(int Dimensionality, double* InputArray); // prototype of constructor
~TestClass(void); // prototype of destructor
double SumListOfNumbers(void);
int Dimensionality;
double* ListOfNumbers;
};
TestClass::TestClass(int DIM, double* InputArray)
{
Dimensionality = DIM;
std::cout << Dimensionality << "\n";
ListOfNumbers = new double[Dimensionality];
for (int i = 0; i < Dimensionality; ++i) {
ListOfNumbers[i] = InputArray[i];
std::cout << ListOfNumbers[i] << ", ";
}
std::cout << "\n";
};
TestClass::~TestClass(void){
std::cout << "Being Destroyed" << "\n";
};
double TestClass::SumListOfNumbers(void){
double Sum = 0;
for (int i = 0; i < Dimensionality; ++i) {
Sum += ListOfNumbers[i];
}
return Sum;
}
解决这个问题的方法是按照oz1的建议,将
embedsignature
指令设置为True
,并添加一个普通的python__init__
函数,如下所示:然后init签名会自动包含在docstring中,如下所示:
^{pr2}$相关问题 更多 >
编程相关推荐