python创建实例失败_Python无法创建实例

我正在尝试使用

PyCXX创建一个简单的Python扩展.我正在编译我的Python 2.5安装.

我的目标是能够在Python中执行以下操作:

import Cats

kitty = Cats.Kitty()

if type(kitty) == Cats.Kitty:

kitty.Speak()

但每次我尝试,这都是我得到的错误:

TypeError:无法创建“Kitty”实例

它确实将Cats.Kitty视为一个类型对象,但我不能创建Kitty类的实例,任何想法?

这是我目前的来源:

#include "CXX/Objects.hxx"

#include "CXX/Extensions.hxx"

#include

using namespace Py;

using namespace std;

class Kitty : public Py::PythonExtension

{

public:

Kitty()

{

}

virtual ~Kitty()

{

}

static void init_type(void)

{

behaviors().name("Kitty");

behaviors().supportGetattr();

add_varargs_method("Speak", &Kitty::Speak);

}

virtual Py::Object getattr( const char *name )

{

return getattr_methods( name );

}

Py::Object Speak( const Py::Tuple &args )

{

cout << "Meow!" << endl;

return Py::None();

}

};

class Cats : public ExtensionModule

{

public:

Cats()

: ExtensionModule("Cats")

{

Kitty::init_type();

initialize();

Dict d(moduleDictionary());

d["Kitty"] = Type((PyObject*)Kitty::type_object());

}

virtual ~Cats()

{

}

Py::Object factory_Kitty( const Py::Tuple &rargs )

{

return Py::asObject( new Kitty );

}

};

void init_Cats()

{

static Cats* cats = new Cats;

}

int main(int argc, char* argv[])

{

Py_Initialize();

init_Cats();

return Py_Main(argc, argv);

return 0;

}

最佳答案 我在代码中看不到它,但通常意味着它无法创建实例,这意味着它无法找到ctor.你确定你的ctor与预期的签名完全匹配吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值