Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否可以在cython定义的类的实例上使用_dict__;属性?_Python_Dictionary_Attributes_Cython - Fatal编程技术网

Python 是否可以在cython定义的类的实例上使用_dict__;属性?

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

我在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 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,因为文档没有更新: