Python 是否可以在cython定义的类的实例上使用_dict__;属性?
我在cython中定义了一个向量类,我试图向用户展示一些属性。我想使用Python 是否可以在cython定义的类的实例上使用_dict__;属性?,python,dictionary,attributes,cython,Python,Dictionary,Attributes,Cython,我在cython中定义了一个向量类,我试图向用户展示一些属性。我想使用\uuuu dict\uuuu属性对它们进行迭代,但是我得到一个错误,我的对象不包含该属性。是否可以对cython定义的对象的实例使用\uuuu dict\uuuu属性 例如: from my_cython_lib import vector v1 = Vector() for attrtibute in v1.__dict__: # do stuff to the attribute 我的向量类: cdef cl
\uuuu dict\uuuu
属性对它们进行迭代,但是我得到一个错误,我的对象不包含该属性。是否可以对cython定义的对象的实例使用\uuuu dict\uuuu
属性
例如:
from my_cython_lib import vector
v1 = Vector()
for attrtibute in v1.__dict__:
# do stuff to the attribute
我的向量类:
cdef class Vector:
def __cinit__(self):
self.x = None
self.y = None
self.z = None
类似Cythonized类的整个要点是,您并不是在创建一个膨胀的python对象,它携带一个200多字节的dict作为名称空间。也许您可以迭代
dir(vector)
,并使用getattr(vector,attr)
获取属性,是的,也许以不同的方式进行迭代会更明智。强制Cython对属性使用dict是可能的,但这样做否定了使用Cython的大部分意义。有趣的是,不久前您的cdef类向量
不会编译,请参阅。这可能是一个错误,因为文档没有更新:类似Cythonized类的整个要点是,您没有创建一个膨胀的python对象,该对象带有一个200多字节的dict作为名称空间。也许您可以迭代dir(vector)
并使用getattr(vector,attr)
获取属性,juanpa,是的,也许以不同的方式进行迭代会更明智。强制Cython对属性使用dict是可能的,但这样做否定了使用Cython的大部分意义。有趣的是,不久前您的cdef类向量
不会编译,请参阅。这可能是一个bug,因为文档没有更新: