【发布时间】:2015-11-26 22:24:11
【问题描述】:
我有一个基于插槽的 Python 类来节省空间
class my_class(object):
__slots__ = ('x', 'y')
def __init__(self, x, y):
self.x = x
self.y = y
我需要从 C 函数访问此类的对象。 当我打印时
obj->ob_type->tp_name
在 C 中,我看到了 my_class,但找不到访问实例上成员值的方法。
【问题讨论】:
-
您在寻找什么样的访问权限?您需要知道插槽的名称(自省)还是知道有
x和y属性并且只需要访问它们? -
我知道他们的名字。只需要访问这些值。
-
我刚才可以使用 PyObject_GetAttrString(obj, "x") 访问它们。这是首选方法还是有更快的方法?
-
这是首选方法。它们只是属性,实际上是作为类上的描述符实现的,访问实例内存空间中的值。
标签: python python-c-api slots