微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在C中的python类中指定静态变量

如何在C Python C中在python类中指定静态方法或变量?

在PyTypeObject结构中,tp_getset,tp_methods,tp_members似乎都假定了该类的一个实例.

非常感谢,
抢.

解决方法

通过将METH_STATIC或METH_CLASS添加到PyMethodDef结构的ml_flags字段,可以在tp_methods中定义静态和类方法.这相当于@staticmethod和@classmethod装饰器.

方法的第一个参数(通常是实例指针)对于静态方法将为NULL,对于类方法将为PyTypeObject *.

http://docs.python.org/c-api/structures.html#PyMethodDef

调用PyType_Ready()之前(在模块初始化函数中),可以通过将tp_dict设置为具有这些属性的字典来添加属性.或者tp_dict可以保留为NULL,在这种情况下PyType_Ready()将为您创建dict.然后可以将属性添加到该dict.

http://docs.python.org/c-api/typeobj.html#tp_dict

计算类属性需要描述符类,与Python完全相同.然后,应该像其他类属性一样将描述符的实例添加到tp_dict.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐