python _instance属性_在Python中向instancemethods添加属性

如果要从C修改函数和实例方法的函数属性,则必须检查可调用的类型。

因此,假设您有某种类型的可调用PyObject,您可以这样检查它:PyObject *callable; // set to something callable

PyObject *setting; // set to something

if(PyMethod_Check(callable)){

PyObject_SetAttrString(PyMethod_Function(callable),"attribute",setting);

}else{

PyObject_SetAttrString(callable,"attribute",setting);

}

...

// and the inverse

if(PyMethod_Check(callable){

if(PyObject_HasAttrString(PyMethod_Function(callable),"attribute")){

PyObject_DelAttrString(PyMethod_Function(callable),"attribute");

}

}else{

if(PyObject_HasAttrString(callable,"attribute")){

PyObject_DelAttrString(callable,"attribute");

}

}

现在,agf指出了Python中的实例方法。如果我只是尝试设置实例方法的属性,那么无论我如何从Python访问它,它都找不到该属性。

我遇到了这个问题,李浩毅的问题和agf的回答帮助我理解了需要改变的地方。我想有人会在寻找如何通过C来解决这个问题时,找到这个问题并再次给出答案

编辑:

注意:这是针对Python2.7.x的。Python3.x使用不同的函数调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值